* mcore-dis.c: Fix formatting.
* mips-dis.c: Likewise. * pj-dis.c: Likewise. * z8k-dis.c: Likewise.
This commit is contained in:
parent
198ce79b6b
commit
7f6621cdd7
@ -1,3 +1,10 @@
|
||||
2001-08-13 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* mcore-dis.c: Fix formatting.
|
||||
* mips-dis.c: Likewise.
|
||||
* pj-dis.c: Likewise.
|
||||
* z8k-dis.c: Likewise.
|
||||
|
||||
2001-08-12 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* cgen-ibld.in (extract_normal): Match type of VALUE and MASK
|
||||
|
@ -24,8 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
#include "dis-asm.h"
|
||||
|
||||
/* Mask for each mcore_opclass: */
|
||||
static const unsigned short imsk[] =
|
||||
{
|
||||
static const unsigned short imsk[] = {
|
||||
/* O0 */ 0xFFFF,
|
||||
/* OT */ 0xFFFC,
|
||||
/* O1 */ 0xFFF0,
|
||||
@ -34,7 +33,7 @@ static const unsigned short imsk[] =
|
||||
/* X1 */ 0xFFF0,
|
||||
/* OI */ 0xFE00,
|
||||
/* OB */ 0xFE00,
|
||||
|
||||
|
||||
/* OMa */ 0xFFF0,
|
||||
/* SI */ 0xFE00,
|
||||
/* I7 */ 0xF800,
|
||||
@ -43,7 +42,7 @@ static const unsigned short imsk[] =
|
||||
/* BL */ 0xFF00,
|
||||
/* LR */ 0xF000,
|
||||
/* LJ */ 0xFF00,
|
||||
|
||||
|
||||
/* RM */ 0xFFF0,
|
||||
/* RQ */ 0xFFF0,
|
||||
/* JSR */ 0xFFF0,
|
||||
@ -52,33 +51,31 @@ static const unsigned short imsk[] =
|
||||
/* OBRb*/ 0xFF80,
|
||||
/* OBRc*/ 0xFF00,
|
||||
/* OBR2*/ 0xFE00,
|
||||
|
||||
|
||||
/* O1R1*/ 0xFFF0,
|
||||
/* OMb */ 0xFF80,
|
||||
/* OMc */ 0xFF00,
|
||||
/* SIa */ 0xFE00,
|
||||
|
||||
/* MULSH */ 0xFF00,
|
||||
/* MULSH */ 0xFF00,
|
||||
/* OPSR */ 0xFFF8, /* psrset/psrclr */
|
||||
|
||||
|
||||
/* JC */ 0, /* JC,JU,JL don't appear in object */
|
||||
/* JU */ 0,
|
||||
/* JL */ 0,
|
||||
/* RSI */ 0,
|
||||
/* DO21*/ 0,
|
||||
/* OB2 */ 0 /* OB2 won't appear in object. */
|
||||
/* OB2 */ 0 /* OB2 won't appear in object. */
|
||||
};
|
||||
|
||||
static const char * grname[] =
|
||||
{
|
||||
static const char *grname[] = {
|
||||
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
|
||||
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
|
||||
};
|
||||
|
||||
static const char X[] = "??";
|
||||
|
||||
static const char * crname[] =
|
||||
{
|
||||
static const char *crname[] = {
|
||||
"psr", "vbr", "epsr", "fpsr", "epc", "fpc", "ss0", "ss1",
|
||||
"ss2", "ss3", "ss4", "gcr", "gsr", X, X, X,
|
||||
X, X, X, X, X, X, X, X,
|
||||
@ -87,10 +84,10 @@ static const char * crname[] =
|
||||
|
||||
static const unsigned isiz[] = { 2, 0, 1, 0 };
|
||||
|
||||
int
|
||||
int
|
||||
print_insn_mcore (memaddr, info)
|
||||
bfd_vma memaddr;
|
||||
struct disassemble_info * info;
|
||||
struct disassemble_info *info;
|
||||
{
|
||||
unsigned char ibytes[4];
|
||||
fprintf_ftype fprintf = info->fprintf_func;
|
||||
@ -103,7 +100,7 @@ print_insn_mcore (memaddr, info)
|
||||
|
||||
status = info->read_memory_func (memaddr, ibytes, 2, info);
|
||||
|
||||
if (status != 0)
|
||||
if (status != 0)
|
||||
{
|
||||
info->memory_error_func (status, memaddr, info);
|
||||
return -1;
|
||||
@ -117,7 +114,7 @@ print_insn_mcore (memaddr, info)
|
||||
abort ();
|
||||
|
||||
/* Just a linear search of the table. */
|
||||
for (op = mcore_table; op->name != 0; op ++)
|
||||
for (op = mcore_table; op->name != 0; op++)
|
||||
if (op->inst == (inst & imsk[op->opclass]))
|
||||
break;
|
||||
|
||||
@ -125,10 +122,10 @@ print_insn_mcore (memaddr, info)
|
||||
fprintf (stream, ".short 0x%04x", inst);
|
||||
else
|
||||
{
|
||||
const char * name = grname[inst & 0x0F];
|
||||
|
||||
const char *name = grname[inst & 0x0F];
|
||||
|
||||
fprintf (stream, "%s", op->name);
|
||||
|
||||
|
||||
switch (op->opclass)
|
||||
{
|
||||
case O0: break;
|
||||
@ -157,21 +154,21 @@ print_insn_mcore (memaddr, info)
|
||||
case LS: fprintf (stream, "\t%s, (%s, %d)", grname[(inst >> 8) & 0xF],
|
||||
name, ((inst >> 4) & 0xF) << isiz[(inst >> 13) & 3]);
|
||||
break;
|
||||
|
||||
|
||||
case BR:
|
||||
{
|
||||
long val = inst & 0x3FF;
|
||||
|
||||
|
||||
if (inst & 0x400)
|
||||
val |= 0xFFFFFC00;
|
||||
|
||||
fprintf (stream, "\t0x%x", memaddr + 2 + (val<<1));
|
||||
|
||||
|
||||
fprintf (stream, "\t0x%x", memaddr + 2 + (val << 1));
|
||||
|
||||
if (strcmp (op->name, "bsr") == 0)
|
||||
{
|
||||
/* For bsr, we'll try to get a symbol for the target. */
|
||||
val = memaddr + 2 + (val << 1);
|
||||
|
||||
|
||||
if (info->print_address_func && val != 0)
|
||||
{
|
||||
fprintf (stream, "\t// ");
|
||||
@ -180,36 +177,36 @@ print_insn_mcore (memaddr, info)
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case BL:
|
||||
{
|
||||
long val;
|
||||
val = (inst & 0x000F);
|
||||
fprintf (stream, "\t%s, 0x%x",
|
||||
grname[(inst >> 4) & 0xF], memaddr - (val << 1));
|
||||
grname[(inst >> 4) & 0xF], memaddr - (val << 1));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case LR:
|
||||
{
|
||||
unsigned long val;
|
||||
|
||||
|
||||
val = (memaddr + 2 + ((inst & 0xFF) << 2)) & 0xFFFFFFFC;
|
||||
|
||||
|
||||
status = info->read_memory_func (val, ibytes, 4, info);
|
||||
if (status != 0)
|
||||
if (status != 0)
|
||||
{
|
||||
info->memory_error_func (status, memaddr, info);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (info->endian == BFD_ENDIAN_LITTLE)
|
||||
val = (ibytes[3] << 24) | (ibytes[2] << 16)
|
||||
| (ibytes[1] << 8) | (ibytes[0]);
|
||||
else
|
||||
val = (ibytes[0] << 24) | (ibytes[1] << 16)
|
||||
| (ibytes[2] << 8) | (ibytes[3]);
|
||||
|
||||
|
||||
/* Removed [] around literal value to match ABI syntax 12/95. */
|
||||
fprintf (stream, "\t%s, 0x%X", grname[(inst >> 8) & 0xF], val);
|
||||
|
||||
@ -218,15 +215,15 @@ print_insn_mcore (memaddr, info)
|
||||
(memaddr + 2 + ((inst & 0xFF) << 2)) & 0xFFFFFFFC);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case LJ:
|
||||
{
|
||||
unsigned long val;
|
||||
|
||||
|
||||
val = (memaddr + 2 + ((inst & 0xFF) << 2)) & 0xFFFFFFFC;
|
||||
|
||||
|
||||
status = info->read_memory_func (val, ibytes, 4, info);
|
||||
if (status != 0)
|
||||
if (status != 0)
|
||||
{
|
||||
info->memory_error_func (status, memaddr, info);
|
||||
break;
|
||||
@ -238,7 +235,7 @@ print_insn_mcore (memaddr, info)
|
||||
else
|
||||
val = (ibytes[0] << 24) | (ibytes[1] << 16)
|
||||
| (ibytes[2] << 8) | (ibytes[3]);
|
||||
|
||||
|
||||
/* Removed [] around literal value to match ABI syntax 12/95. */
|
||||
fprintf (stream, "\t0x%X", val);
|
||||
/* For jmpi/jsri, we'll try to get a symbol for the target. */
|
||||
@ -254,26 +251,25 @@ print_insn_mcore (memaddr, info)
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case OPSR:
|
||||
{
|
||||
static char * fields[] =
|
||||
{
|
||||
"af", "ie", "fe", "fe,ie",
|
||||
static char *fields[] = {
|
||||
"af", "ie", "fe", "fe,ie",
|
||||
"ee", "ee,ie", "ee,fe", "ee,fe,ie"
|
||||
};
|
||||
|
||||
|
||||
fprintf (stream, "\t%s", fields[inst & 0x7]);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/* If the disassembler lags the instruction set. */
|
||||
fprintf (stream, "\tundecoded operands, inst is 0x%04x", inst);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Say how many bytes we consumed. */
|
||||
return 2;
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
/* FIXME: These are needed to figure out if the code is mips16 or
|
||||
not. The low bit of the address is often a good indicator. No
|
||||
symbol table is available when this code runs out in an embedded
|
||||
system as when it is used for disassembler support in a monitor. */
|
||||
system as when it is used for disassembler support in a monitor. */
|
||||
|
||||
#if !defined(EMBEDDED_ENV)
|
||||
#define SYMTAB_AVAILABLE 1
|
||||
@ -54,13 +54,11 @@ static void print_mips16_insn_arg
|
||||
/* FIXME: These should be shared with gdb somehow. */
|
||||
|
||||
/* The mips16 register names. */
|
||||
static const char * const mips16_reg_names[] =
|
||||
{
|
||||
static const char * const mips16_reg_names[] = {
|
||||
"s0", "s1", "v0", "v1", "a0", "a1", "a2", "a3"
|
||||
};
|
||||
|
||||
static const char * const mips32_reg_names[] =
|
||||
{
|
||||
static const char * const mips32_reg_names[] = {
|
||||
"zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
|
||||
"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",
|
||||
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
|
||||
@ -74,8 +72,7 @@ static const char * const mips32_reg_names[] =
|
||||
"epc", "prid"
|
||||
};
|
||||
|
||||
static const char * const mips64_reg_names[] =
|
||||
{
|
||||
static const char * const mips64_reg_names[] = {
|
||||
"zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
|
||||
"a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
|
||||
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
|
||||
@ -93,7 +90,7 @@ static const char * const mips64_reg_names[] =
|
||||
table to use. */
|
||||
static const char * const *reg_names = NULL;
|
||||
|
||||
/* Print insn arguments for 32/64-bit code */
|
||||
/* Print insn arguments for 32/64-bit code. */
|
||||
|
||||
static void
|
||||
print_insn_arg (d, l, pc, info)
|
||||
@ -129,10 +126,10 @@ print_insn_arg (d, l, pc, info)
|
||||
case 'i':
|
||||
case 'u':
|
||||
(*info->fprintf_func) (info->stream, "0x%x",
|
||||
(l >> OP_SH_IMMEDIATE) & OP_MASK_IMMEDIATE);
|
||||
(l >> OP_SH_IMMEDIATE) & OP_MASK_IMMEDIATE);
|
||||
break;
|
||||
|
||||
case 'j': /* same as i, but sign-extended */
|
||||
case 'j': /* Same as i, but sign-extended. */
|
||||
case 'o':
|
||||
delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA;
|
||||
if (delta & 0x8000)
|
||||
@ -155,13 +152,13 @@ print_insn_arg (d, l, pc, info)
|
||||
|
||||
case 'a':
|
||||
(*info->print_address_func)
|
||||
((((pc + 4) & ~ (bfd_vma) 0x0fffffff)
|
||||
((((pc + 4) & ~(bfd_vma) 0x0fffffff)
|
||||
| (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2)),
|
||||
info);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
/* sign extend the displacement */
|
||||
/* Sign extend the displacement. */
|
||||
delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA;
|
||||
if (delta & 0x8000)
|
||||
delta |= ~0xffff;
|
||||
@ -177,25 +174,25 @@ print_insn_arg (d, l, pc, info)
|
||||
|
||||
case 'U':
|
||||
{
|
||||
/* First check for both rd and rt being equal. */
|
||||
unsigned int reg = (l >> OP_SH_RD) & OP_MASK_RD;
|
||||
if (reg == ((l >> OP_SH_RT) & OP_MASK_RT))
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[reg]);
|
||||
else
|
||||
{
|
||||
/* If one is zero use the other. */
|
||||
if (reg == 0)
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[(l >> OP_SH_RT) & OP_MASK_RT]);
|
||||
else if (((l >> OP_SH_RT) & OP_MASK_RT) == 0)
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[reg]);
|
||||
else /* Bogus, result depends on processor. */
|
||||
(*info->fprintf_func) (info->stream, "%s or %s",
|
||||
reg_names[reg],
|
||||
reg_names[(l >> OP_SH_RT) & OP_MASK_RT]);
|
||||
}
|
||||
/* First check for both rd and rt being equal. */
|
||||
unsigned int reg = (l >> OP_SH_RD) & OP_MASK_RD;
|
||||
if (reg == ((l >> OP_SH_RT) & OP_MASK_RT))
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[reg]);
|
||||
else
|
||||
{
|
||||
/* If one is zero use the other. */
|
||||
if (reg == 0)
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[(l >> OP_SH_RT) & OP_MASK_RT]);
|
||||
else if (((l >> OP_SH_RT) & OP_MASK_RT) == 0)
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
reg_names[reg]);
|
||||
else /* Bogus, result depends on processor. */
|
||||
(*info->fprintf_func) (info->stream, "%s or %s",
|
||||
reg_names[reg],
|
||||
reg_names[(l >> OP_SH_RT) & OP_MASK_RT]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -294,7 +291,7 @@ print_insn_arg (d, l, pc, info)
|
||||
}
|
||||
}
|
||||
|
||||
/* Figure out the MIPS ISA and CPU based on the machine number. */
|
||||
/* Figure out the MIPS ISA and CPU based on the machine number. */
|
||||
|
||||
static void
|
||||
mips_isa_type (mach, isa, cputype)
|
||||
@ -398,7 +395,7 @@ mips_isa_type (mach, isa, cputype)
|
||||
/* Check if the object uses NewABI conventions. */
|
||||
|
||||
static int
|
||||
is_newabi(header)
|
||||
is_newabi (header)
|
||||
Elf_Internal_Ehdr *header;
|
||||
{
|
||||
if ((header->e_flags
|
||||
@ -443,7 +440,7 @@ print_insn_mips (memaddr, word, info)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init = 1;
|
||||
}
|
||||
@ -477,9 +474,9 @@ print_insn_mips (memaddr, word, info)
|
||||
d = op->args;
|
||||
if (d != NULL && *d != '\0')
|
||||
{
|
||||
(*info->fprintf_func) (info->stream, "\t");
|
||||
(*info->fprintf_func) (info->stream, "\t");
|
||||
for (; *d != '\0'; d++)
|
||||
print_insn_arg (d, word, memaddr, info);
|
||||
print_insn_arg (d, word, memaddr, info);
|
||||
}
|
||||
|
||||
return INSNLEN;
|
||||
@ -530,8 +527,8 @@ _print_insn_mips (memaddr, info, endianness)
|
||||
{
|
||||
Elf_Internal_Ehdr *header;
|
||||
|
||||
header = elf_elfheader(bfd_asymbol_bfd(*(info->symbols)));
|
||||
if (is_newabi(header))
|
||||
header = elf_elfheader (bfd_asymbol_bfd (*(info->symbols)));
|
||||
if (is_newabi (header))
|
||||
reg_names = mips64_reg_names;
|
||||
}
|
||||
|
||||
@ -541,7 +538,7 @@ _print_insn_mips (memaddr, info, endianness)
|
||||
unsigned long insn;
|
||||
|
||||
if (endianness == BFD_ENDIAN_BIG)
|
||||
insn = (unsigned long) bfd_getb32 (buffer);
|
||||
insn = (unsigned long) bfd_getb32 (buffer);
|
||||
else
|
||||
insn = (unsigned long) bfd_getl32 (buffer);
|
||||
|
||||
@ -791,7 +788,7 @@ print_mips16_insn_arg (type, op, l, use_extend, extend, memaddr, info)
|
||||
case 'X':
|
||||
(*info->fprintf_func) (info->stream, "%s",
|
||||
mips32_reg_names[((l >> MIPS16OP_SH_REGR32)
|
||||
& MIPS16OP_MASK_REGR32)]);
|
||||
& MIPS16OP_MASK_REGR32)]);
|
||||
break;
|
||||
|
||||
case 'Y':
|
||||
@ -1051,7 +1048,7 @@ print_mips16_insn_arg (type, op, l, use_extend, extend, memaddr, info)
|
||||
baseaddr = memaddr - 2;
|
||||
}
|
||||
}
|
||||
val = (baseaddr & ~ ((1 << shift) - 1)) + immed;
|
||||
val = (baseaddr & ~((1 << shift) - 1)) + immed;
|
||||
(*info->print_address_func) (val, info);
|
||||
info->target = val;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* pj-dis.c -- Disassemble picoJava instructions.
|
||||
Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Contributed by Steve Chamberlain, of Transmeta (sac@pobox.com).
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -33,10 +33,10 @@ get_int (memaddr, iptr, info)
|
||||
|
||||
int status = info->read_memory_func (memaddr, ival, 4, info);
|
||||
|
||||
*iptr = (ival[0] << 24)
|
||||
| (ival[1] << 16)
|
||||
| (ival[2] << 8)
|
||||
| (ival[3] << 0) ;
|
||||
*iptr = (ival[0] << 24)
|
||||
| (ival[1] << 16)
|
||||
| (ival[2] << 8)
|
||||
| (ival[3] << 0);
|
||||
|
||||
return status;
|
||||
}
|
||||
@ -72,7 +72,7 @@ print_insn_pj (addr, info)
|
||||
fprintf_fn (stream, "%s", op->name);
|
||||
|
||||
/* The tableswitch instruction is followed by the default
|
||||
address, low value, high value and the destinations. */
|
||||
address, low value, high value and the destinations. */
|
||||
|
||||
if (strcmp (op->name, "tableswitch") == 0)
|
||||
{
|
||||
@ -111,8 +111,8 @@ print_insn_pj (addr, info)
|
||||
|
||||
/* The lookupswitch instruction is followed by the default
|
||||
address, element count and pairs of values and
|
||||
addresses. */
|
||||
|
||||
addresses. */
|
||||
|
||||
if (strcmp (op->name, "lookupswitch") == 0)
|
||||
{
|
||||
int count;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Disassemble z8000 code.
|
||||
Copyright 1992, 1993, 1998, 2000
|
||||
Copyright 1992, 1993, 1998, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
@ -269,7 +269,6 @@ z8k_lookup_instr (nibbles, info)
|
||||
tabl_index++;
|
||||
}
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
@ -334,22 +333,22 @@ unpack_instr (instr_data, is_segmented, info)
|
||||
switch (datum_value)
|
||||
{
|
||||
case ARG_DISP16:
|
||||
instr_data->displacement = instr_data->insn_start + 4 +
|
||||
(signed short) (instr_word & 0xffff);
|
||||
instr_data->displacement = instr_data->insn_start + 4
|
||||
+ (signed short) (instr_word & 0xffff);
|
||||
nibl_count += 3;
|
||||
break;
|
||||
case ARG_DISP12:
|
||||
if (instr_word & 0x800)
|
||||
if (instr_word & 0x800)
|
||||
{
|
||||
/* neg. 12 bit displacement */
|
||||
instr_data->displacement = instr_data->insn_start + 2
|
||||
- (signed short) ((instr_word & 0xfff) | 0xf000) * 2;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
instr_data->displacement = instr_data->insn_start + 2
|
||||
- (instr_word & 0x0fff) * 2;
|
||||
}
|
||||
}
|
||||
nibl_count += 2;
|
||||
break;
|
||||
default:
|
||||
@ -411,15 +410,15 @@ unpack_instr (instr_data, is_segmented, info)
|
||||
FETCH_DATA (info, nibl_count + 8);
|
||||
instr_long = (instr_data->words[nibl_count] << 16)
|
||||
| (instr_data->words[nibl_count + 4]);
|
||||
instr_data->address = ((instr_word & 0x7f00) << 8) +
|
||||
(instr_long & 0xffff);
|
||||
instr_data->address = ((instr_word & 0x7f00) << 8)
|
||||
+ (instr_long & 0xffff);
|
||||
nibl_count += 7;
|
||||
seg_length = 2;
|
||||
seg_length = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
instr_data->address = ((instr_word & 0x7f00) << 8) +
|
||||
(instr_word & 0x00ff);
|
||||
instr_data->address = ((instr_word & 0x7f00) << 8)
|
||||
+ (instr_word & 0x00ff);
|
||||
nibl_count += 3;
|
||||
}
|
||||
}
|
||||
@ -434,11 +433,13 @@ unpack_instr (instr_data, is_segmented, info)
|
||||
instr_data->ctrl_code = instr_nibl & 0x7;
|
||||
break;
|
||||
case CLASS_0DISP7:
|
||||
instr_data->displacement = instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
|
||||
instr_data->displacement =
|
||||
instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
|
||||
nibl_count += 1;
|
||||
break;
|
||||
case CLASS_1DISP7:
|
||||
instr_data->displacement = instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
|
||||
instr_data->displacement =
|
||||
instr_data->insn_start + 2 - (instr_byte & 0x7f) * 2;
|
||||
nibl_count += 1;
|
||||
break;
|
||||
case CLASS_01II:
|
||||
@ -459,12 +460,13 @@ unpack_instr (instr_data, is_segmented, info)
|
||||
case CLASS_REGN0:
|
||||
instr_data->arg_reg[datum_value] = instr_nibl;
|
||||
break;
|
||||
case CLASS_DISP8:
|
||||
instr_data->displacement = instr_data->insn_start + 2 + (signed char)instr_byte * 2;
|
||||
case CLASS_DISP8:
|
||||
instr_data->displacement =
|
||||
instr_data->insn_start + 2 + (signed char) instr_byte * 2;
|
||||
nibl_count += 1;
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
|
||||
@ -566,14 +568,14 @@ unparse_instr (instr_data, is_segmented)
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
case CLASS_PR:
|
||||
if (is_segmented)
|
||||
sprintf (tmp_str, "rr%ld", instr_data->arg_reg[datum_value]);
|
||||
else
|
||||
sprintf (tmp_str, "r%ld", instr_data->arg_reg[datum_value]);
|
||||
if (is_segmented)
|
||||
sprintf (tmp_str, "rr%ld", instr_data->arg_reg[datum_value]);
|
||||
else
|
||||
sprintf (tmp_str, "r%ld", instr_data->arg_reg[datum_value]);
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
abort ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user