just disassembled some code generated by 6c
and found something funny. the debugger seems
to print the operands of MOVLQSX in the wrong
order.

output of 6c -S:

        MOVLQSX BP,CX
        ADDQ    CX,AX
        RET     ,

output of acid:

foo+0x1a 0x00200042     MOVLQSX CX,BP
foo+0x1d 0x00200045     ADDQ    CX,AX
foo+0x20 0x00200048     RET

fix:

diff -r 4e094627d459 sys/src/libmach/8db.c
--- a/sys/src/libmach/8db.c     Tue Jan 14 00:22:13 2014 +0100
+++ b/sys/src/libmach/8db.c     Fri Jan 17 21:06:42 2014 +0100
@@ -1223,7 +1223,7 @@
 [0xfd] 0,0,            "STD",
 [0xfe] RMOPB,0,        optabFE,
 [0xff] RMOP,0,         optabFF,
-[0x100]        RM,0,           "MOVLQSX        %r,%e",
+[0x100]        RM,0,           "MOVLQSX        %e,%r",
 };

--
cinap

Reply via email to