x86: RET read/write stack register. this fixes issue #790
diff --git a/arch/X86/X86Mapping.c b/arch/X86/X86Mapping.c
index 1ce5f47..c624581 100644
--- a/arch/X86/X86Mapping.c
+++ b/arch/X86/X86Mapping.c
@@ -2616,6 +2616,25 @@
break;
}
break;
+
+ case X86_INS_RET:
+ switch(h->mode) {
+ case CS_MODE_16:
+ insn->detail->regs_write[0] = X86_REG_SP;
+ insn->detail->regs_read[0] = X86_REG_SP;
+ break;
+ case CS_MODE_32:
+ insn->detail->regs_write[0] = X86_REG_ESP;
+ insn->detail->regs_read[0] = X86_REG_ESP;
+ break;
+ default: // 64-bit
+ insn->detail->regs_write[0] = X86_REG_RSP;
+ insn->detail->regs_read[0] = X86_REG_RSP;
+ break;
+ }
+ insn->detail->regs_write_count = 1;
+ insn->detail->regs_read_count = 1;
+ break;
}
memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));