summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_x86.cc
diff options
context:
space:
mode:
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r--disassembler/disassembler_x86.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc
index 456e3b57f8..e6a6860626 100644
--- a/disassembler/disassembler_x86.cc
+++ b/disassembler/disassembler_x86.cc
@@ -258,6 +258,17 @@ DISASSEMBLER_ENTRY(cmp,
reg_in_opcode = true;
target_specific = true;
break;
+ case 0x63:
+ if (rex == 0x48) {
+ opcode << "movsxd";
+ has_modrm = true;
+ load = true;
+ } else {
+ // In 32-bit mode (!supports_rex_) this is ARPL, with no REX prefix the functionality is the
+ // same as 'mov' but the use of the instruction is discouraged.
+ opcode << StringPrintf("unknown opcode '%02X'", *instr);
+ }
+ break;
case 0x68: opcode << "push"; immediate_bytes = 4; break;
case 0x69: opcode << "imul"; load = true; has_modrm = true; immediate_bytes = 4; break;
case 0x6A: opcode << "push"; immediate_bytes = 1; break;