diff --git a/cs.c b/cs.c index b30de60976..881e8ed603 100644 --- a/cs.c +++ b/cs.c @@ -904,6 +904,7 @@ size_t CAPSTONE_API cs_disasm(csh ud, const uint8_t *buffer, size_t size, uint64 handle->printer(&mci, &ss, handle->printer_info); fill_insn(handle, insn_cache, ss.buffer, &mci, handle->post_printer, buffer); + insn_cache->opcode = mci.Opcode; // adjust for pseudo opcode (X86) if (handle->arch == CS_ARCH_X86) @@ -1110,6 +1111,7 @@ bool CAPSTONE_API cs_disasm_iter(csh ud, const uint8_t **code, size_t *size, handle->printer(&mci, &ss, handle->printer_info); fill_insn(handle, insn, ss.buffer, &mci, handle->post_printer, *code); + insn->opcode = mci.Opcode; // adjust for pseudo opcode (X86) if (handle->arch == CS_ARCH_X86) diff --git a/include/capstone/capstone.h b/include/capstone/capstone.h index c45ca1872e..1b5e0daad7 100644 --- a/include/capstone/capstone.h +++ b/include/capstone/capstone.h @@ -379,6 +379,9 @@ typedef struct cs_insn { /// NOTE 2: when in Skipdata mode, or when detail mode is OFF, even if this pointer /// is not NULL, its content is still irrelevant. cs_detail *detail; + + /// The internal opcode of this instruction + unsigned int opcode; } cs_insn;