summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2012-04-16 20:37:16 -0700
committer Elliott Hughes <enh@google.com> 2012-04-16 20:37:16 -0700
commit16b5c294c37460b51dc1f5296000cc80bbd33419 (patch)
tree93724e7c43a919cda2298719120895fa705bc529 /src
parent54a3e919ef3c8788e39a21696944d00826c25af3 (diff)
Disassemble x86 0xd0 and 0xd1 shifts.
Change-Id: Id061e1971e7a829f57bb83e5299d999d1da8d21e
Diffstat (limited to 'src')
-rw-r--r--src/disassembler_x86.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/disassembler_x86.cc b/src/disassembler_x86.cc
index eb52d5a952..d2c860b84d 100644
--- a/src/disassembler_x86.cc
+++ b/src/disassembler_x86.cc
@@ -383,13 +383,14 @@ DISASSEMBLER_ENTRY(cmp,
reg_in_opcode = true;
break;
case 0xC0: case 0xC1:
+ case 0xD0: case 0xD1:
static const char* shift_opcodes[] =
{"rol", "ror", "rcl", "rcr", "shl", "shr", "unknown-shift", "sar"};
modrm_opcodes = shift_opcodes;
has_modrm = true;
reg_is_opcode = true;
store = true;
- immediate_bytes = 1;
+ immediate_bytes = ((*instr & 0xf0) == 0xc0) ? 1 : 0;
byte_operand = *instr == 0xC0;
break;
case 0xC3: opcode << "ret"; break;