X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2Fw65-dis.c;h=60d9b04595930c9086cbd27486c9bde5866a2e01;hb=81c41e7378068de1ec05eeb406a7244ed00337f0;hp=309bd5aa0f4c5c5a2b18537cfcaf996b5b81f665;hpb=d0352a18a504a4e7b761f6b3264cf11347d8d056;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/w65-dis.c b/opcodes/w65-dis.c index 309bd5aa0f..60d9b04595 100644 --- a/opcodes/w65-dis.c +++ b/opcodes/w65-dis.c @@ -1,19 +1,23 @@ /* Disassemble WDC 65816 instructions. - Copyright (C) 1995, 1998 Free Software Foundation, Inc. + Copyright 1995, 1998, 2000, 2001, 2002, 2005, 2007 + Free Software Foundation, Inc. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This file is part of the GNU opcodes library. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This library is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #include #include "sysdep.h" @@ -23,97 +27,72 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "w65-opc.h" #include "dis-asm.h" -static fprintf_ftype fpr; -static void *stream; -static struct disassemble_info *local_info; -#if 0 -static char *lname[] = {"r0","r1","r2","r3","r4","r5","r6","r7","s0"}; +static fprintf_ftype fpr; +static void *stream; +static struct disassemble_info *local_info; -static char *findname (val) - unsigned int val; -{ - if (val >= 0x10 && val <= 0x20) - return lname[(val - 0x10) / 2]; - return 0; -} -#endif static void -print_operand (lookup, format, args) - int lookup; - char *format; - unsigned int *args; +print_operand (int lookup, char *format, int *args) { int val; int c; while (*format) { - switch ( c = *format++) + switch (c = *format++) { case '$': val = args[(*format++) - '0']; - if (lookup) - { -#if 0 - name = findname(val); - if (name) - fpr(stream, "%s", name); - else -#endif - local_info->print_address_func (val, local_info); - } + if (lookup) + local_info->print_address_func (val, local_info); else fpr (stream, "0x%x", val); break; default: - fpr(stream,"%c", c); + fpr (stream, "%c", c); break; } } } -int -print_insn_w65(memaddr, info) - bfd_vma memaddr; - struct disassemble_info *info; -{ - +int +print_insn_w65 (bfd_vma memaddr, struct disassemble_info *info) +{ int status = 0; unsigned char insn[4]; - register struct opinfo *op; + const struct opinfo *op; int i; - int X =0; + int X = 0; int M = 0; int args[2]; -stream = info->stream; + + stream = info->stream; fpr = info->fprintf_func; -local_info = info; - for (i = 0; i <4 && status == 0; i++) - { - status = info->read_memory_func(memaddr+i, insn + i, 1, info); - } + local_info = info; + for (i = 0; i < 4 && status == 0; i++) + status = info->read_memory_func (memaddr + i, insn + i, 1, info); - for (op = optable; op->val != insn[0]; op++) + for (op = optable; op->val != insn[0]; op++) ; - fpr(stream,"%s", op->name); - - /* Prepare all the posible operand values */ + fpr (stream, "%s", op->name); + + /* Prepare all the posible operand values. */ { int size = 1; int asR_W65_ABS8 = insn[1]; int asR_W65_ABS16 = (insn[2] << 8) + asR_W65_ABS8; int asR_W65_ABS24 = (insn[3] << 16) + asR_W65_ABS16; - int asR_W65_PCR8 = ((char)(asR_W65_ABS8)) + memaddr + 2; - int asR_W65_PCR16 = ((short)(asR_W65_ABS16)) + memaddr + 3; + int asR_W65_PCR8 = ((char) (asR_W65_ABS8)) + memaddr + 2; + int asR_W65_PCR16 = ((short) (asR_W65_ABS16)) + memaddr + 3; - switch (op->amode) { - DISASM(); - } + switch (op->amode) + { + DISASM (); + } - return size; + return size; } - }