From 67d18be2a5bddbd8ee9ef144b34ccaeba08a1db2 Mon Sep 17 00:00:00 2001 From: Mark Mendell Date: Fri, 30 May 2014 15:05:09 -0400 Subject: Support disassembly of 16-bit immediates Change-Id: I66f5ce93077241204311e52c547599f5287bae04 Signed-off-by: Mark Mendell --- disassembler/disassembler_x86.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'disassembler/disassembler_x86.cc') diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc index cba4ebf4e8..614eca1710 100644 --- a/disassembler/disassembler_x86.cc +++ b/disassembler/disassembler_x86.cc @@ -1040,8 +1040,13 @@ DISASSEMBLER_ENTRY(cmp, instr++; } else { CHECK_EQ(immediate_bytes, 4u); - args << StringPrintf("%d", *reinterpret_cast(instr)); - instr += 4; + if (prefix[2] == 0x66) { // Operand size override from 32-bit to 16-bit. + args << StringPrintf("%d", *reinterpret_cast(instr)); + instr += 2; + } else { + args << StringPrintf("%d", *reinterpret_cast(instr)); + instr += 4; + } } } else if (branch_bytes > 0) { DCHECK(!has_modrm); -- cgit v1.2.3