# HG changeset patch # User Michael Spacefalcon # Date 1396228615 0 # Node ID 78e4702884e383a75263fcc06367448b1669df0d # Parent ec90136f07a692f5d5c71be161880f774fa5230a thumbdis: nop recognition diff -r ec90136f07a6 -r 78e4702884e3 arm7dis/thumbdis.c --- a/arm7dis/thumbdis.c Mon Mar 31 01:10:34 2014 +0000 +++ b/arm7dis/thumbdis.c Mon Mar 31 01:16:55 2014 +0000 @@ -78,16 +78,21 @@ format_5_hiops(word) unsigned word; { - static char *opc[3] = {"add", "cmp", "mov"}; - int reg1, reg2; + static char *opctab[3] = {"add", "cmp", "mov"}; + int reg1, reg2, op; if (word & 0xC0) { reg1 = word & 7; if (word & 0x80) reg1 += 8; reg2 = (word >> 3) & 0xF; - printf("%s\t%s, %s\n", opc[(word>>8)&3], - regnames[reg1], regnames[reg2]); + op = (word >> 8) & 3; + if (op == 2 && reg1 == reg2 && reg1 != 15) + printf("nop\t\t\t(mov %s, %s)\n", + regnames[reg1], regnames[reg2]); + else + printf("%s\t%s, %s\n", opctab[op], + regnames[reg1], regnames[reg2]); } else printf("\n"); }