]> Cypherpunks repositories - gostls13.git/commitdiff
libmach: disassemble MOVLQZX correctly
authorRuss Cox <rsc@golang.org>
Mon, 26 Apr 2010 08:09:19 +0000 (01:09 -0700)
committerRuss Cox <rsc@golang.org>
Mon, 26 Apr 2010 08:09:19 +0000 (01:09 -0700)
R=ken2
CC=golang-dev
https://golang.org/cl/1007041

src/libmach/8db.c

index dfa87da29df470fe9ae845d675e9e9fa87e982f8..ba14dfc3c3761c408775af2167cb4256a07f42d5 100644 (file)
@@ -1131,7 +1131,7 @@ static Optable optabFF[8] =
 [0x06] 0,0,            "PUSHL  %e",
 };
 
-static Optable optable[256+1] =
+static Optable optable[256+2] =
 {
 [0x00] RMB,0,          "ADDB   %r,%e",
 [0x01] RM,0,           "ADD%S  %r,%e",
@@ -1387,6 +1387,7 @@ static Optable optable[256+1] =
 [0xfe] RMOPB,0,        optabFE,
 [0xff] RMOP,0,         optabFF,
 [0x100]        RM,0,           "MOVLQSX        %e,%r",
+[0x101]        RM,0,           "MOVLQZX        %e,%r",
 };
 
 /*
@@ -1590,7 +1591,10 @@ newop:
                                return 0;
                }
                if(c == 0x63){
-                       op = &obase[0x100];     /* MOVLQSX */
+                       if(ip->rex&REXW)
+                               op = &obase[0x100];     /* MOVLQSX */
+                       else
+                               op = &obase[0x101];     /* MOVLQZX */
                        goto hack;
                }
        }