diff options
Diffstat (limited to 'disassembler/disassembler_x86.cc')
-rw-r--r-- | disassembler/disassembler_x86.cc | 11 |
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; |