From 59a9cd05df4deceab8a081150b044eec1ed11609 Mon Sep 17 00:00:00 2001 From: an7s <an7s@git.zephyr-software.com> Date: Fri, 16 Mar 2018 20:08:04 +0000 Subject: [PATCH] Fix for getting memory displacement offset in the CMPPD/CMPSS family of instructions Former-commit-id: 03892447ada7f5c876fd2f717470995ce4cb2ca2 --- libIRDB/src/core/decode_cs.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libIRDB/src/core/decode_cs.cpp b/libIRDB/src/core/decode_cs.cpp index f129fd79a..f4ab66a9d 100644 --- a/libIRDB/src/core/decode_cs.cpp +++ b/libIRDB/src/core/decode_cs.cpp @@ -595,6 +595,11 @@ virtual_offset_t DecodedInstructionCapstone_t::getMemoryDisplacementOffset(const const auto imm=getImmediate(); const auto disp=t.getMemoryDisplacement(); + if(string((char*)the_insn->detail->x86.opcode)=="\x0f\xc2") // CMPPD, CMPSS + { + return the_insn->size - disp_size - 1; // last byte encodes an immediate value to distinguish pseudo-ops + } + if(imm_count==0) return the_insn->size - disp_size; -- GitLab