diff m68k_to_x86.c @ 210:4beaad3a9a50

Fix movem reg to mem for certain addressing modes
author Mike Pavone <pavone@retrodev.com>
date Sun, 27 Jan 2013 13:07:26 -0800
parents 922b59c09259
children 464513050c85
line wrap: on
line diff
--- 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)) {