From e73320f72e5d2a10714672bdbc59e87849100585 Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Sun, 27 Jan 2013 13:07:26 -0800 Subject: Fix movem reg to mem for certain addressing modes --- m68k_to_x86.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/m68k_to_x86.c b/m68k_to_x86.c index 263ef43..ab87751 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -1164,13 +1164,6 @@ uint8_t * translate_m68k_movem(uint8_t * dst, m68kinst * inst, x86_68k_options * //reg to mem early_cycles = 8; int8_t dir; - if (inst->dst.addr_mode == MODE_AREG_PREDEC) { - reg = 15; - dir = -1; - } else { - reg = 0; - dir = 1; - } switch (inst->dst.addr_mode) { case MODE_AREG_INDIRECT: @@ -1286,6 +1279,13 @@ uint8_t * translate_m68k_movem(uint8_t * dst, m68kinst * inst, x86_68k_options * printf("%X: %s\naddress mode %d not implemented (movem dst)\n", inst->address, disasm_buf, inst->dst.addr_mode); exit(1); } + if (inst->dst.addr_mode == MODE_AREG_PREDEC) { + reg = 15; + dir = -1; + } else { + reg = 0; + dir = 1; + } dst = cycles(dst, early_cycles); for(bit=0; reg < 16 && reg >= 0; reg += dir, bit++) { if (inst->src.params.immed & (1 << bit)) { -- cgit v1.2.3