From 9d03b4ec8b00bc244e5c8f6bc0ff00bb4fff614e Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Thu, 27 Dec 2012 21:32:00 -0800 Subject: Fix address register indexed addressing (probably) --- m68k_to_x86.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'm68k_to_x86.c') diff --git a/m68k_to_x86.c b/m68k_to_x86.c index a5494ea..8462756 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -224,6 +224,20 @@ uint8_t * translate_m68k_src(m68kinst * inst, x86_ea * ea, uint8_t * out, x86_68 if (inst->src.params.regs.displacement) { out = add_ir(out, inst->src.params.regs.displacement, SCRATCH1, SZ_D); } + switch (inst->extra.size) + { + case OPSIZE_BYTE: + out = call(out, (char *)m68k_read_byte_scratch1); + break; + case OPSIZE_WORD: + out = call(out, (char *)m68k_read_word_scratch1); + break; + case OPSIZE_LONG: + out = call(out, (char *)m68k_read_long_scratch1); + break; + } + ea->mode = MODE_REG_DIRECT; + ea->base = SCRATCH1; break; case MODE_PC_DISPLACE: out = cycles(out, BUS); -- cgit v1.2.3