diff --git a/libIRDB/src/core/decode_cs.cpp b/libIRDB/src/core/decode_cs.cpp index 8c0b226b3db681e878c9be2b01808fc409e68772..9ec9d6415b7d3c81a5a495707ff91141c9f98e8c 100644 --- a/libIRDB/src/core/decode_cs.cpp +++ b/libIRDB/src/core/decode_cs.cpp @@ -152,6 +152,9 @@ void DecodedInstructionCapstone_t::Disassemble(const virtual_offset_t start_addr } + if(string(insn->mnemonic)=="fcompi") + strcpy(insn->mnemonic, "fcomip"); // bad opcode out of capstone. + const auto cs_freer=[](cs_insn * insn) -> void { diff --git a/libIRDB/src/core/operand_cs.cpp b/libIRDB/src/core/operand_cs.cpp index 7915ec5ef06099c9003121b38bfc88592e806355..4abe51cb762e53a746ca4b03e3725601886ec851 100644 --- a/libIRDB/src/core/operand_cs.cpp +++ b/libIRDB/src/core/operand_cs.cpp @@ -545,12 +545,12 @@ set<string> read_only_operand_mnemonics= "vcomiss", // comisd "comapre scalar ordered double-preicions floating-point values and set flags - "comisd" - "vcomisd" + "comisd", + "vcomisd", // ucomisd "comapre scalar ordered double-preicions floating-point values and set flags - "ucomisd" - "vucomisd" + "ucomisd", + "vucomisd", // packed bit test "vtestps", @@ -601,7 +601,7 @@ set<string> read_only_operand_mnemonics= "vpcmpistrm", // test if in transactional region - "xtest" + "xtest", };