diff options
author | Russ Cox <rsc@golang.org> | 2010-04-26 01:09:19 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-04-26 01:09:19 -0700 |
commit | 1d46a6979a3969fd39274f67a80a3dc3fa90797c (patch) | |
tree | 3cf4e4ee85b5c087d3a73d81bb239e4758d81dd6 | |
parent | 95219382926a5c2fcb0f9a3826aeaca2090be726 (diff) | |
download | golang-1d46a6979a3969fd39274f67a80a3dc3fa90797c.tar.gz |
libmach: disassemble MOVLQZX correctly
R=ken2
CC=golang-dev
http://codereview.appspot.com/1007041
-rw-r--r-- | src/libmach/8db.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libmach/8db.c b/src/libmach/8db.c index dfa87da29..ba14dfc3c 100644 --- a/src/libmach/8db.c +++ b/src/libmach/8db.c @@ -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; } } |