# HG changeset patch # User Mike Pavone # Date 1359320846 28800 # Node ID 4beaad3a9a505bdcb6ce7c0bfc2faae58a870a45 # Parent 922b59c09259c6906c7fcfff9cefc58ce7ea9326 Fix movem reg to mem for certain addressing modes diff -r 922b59c09259 -r 4beaad3a9a50 m68k_to_x86.c --- a/m68k_to_x86.c Sat Jan 26 02:47:26 2013 -0800 +++ b/m68k_to_x86.c Sun Jan 27 13:07:26 2013 -0800 @@ -1164,13 +1164,6 @@ //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 @@ 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)) {