diff options
author | Silent <zdanio95@gmail.com> | 2020-10-30 22:38:26 +0100 |
---|---|---|
committer | Silent <zdanio95@gmail.com> | 2020-10-31 11:43:09 +0100 |
commit | 9024067e9d065e9df777d3c87df409f1293c474d (patch) | |
tree | a996ddd676b072ce2a645e37d729ed8102cd5fbc /subhook_x86.c | |
parent | 4d0c8c2499fa8ec9dd450f075a79211bcced5c35 (diff) | |
download | subhook-9024067e9d065e9df777d3c87df409f1293c474d.zip subhook-9024067e9d065e9df777d3c87df409f1293c474d.tar.gz subhook-9024067e9d065e9df777d3c87df409f1293c474d.tar.bz2 |
Implement additional CMP, DEC and FLD instructions
Fixes broken trampolines encountered in Cxbx-Reloaded
Diffstat (limited to 'subhook_x86.c')
-rw-r--r-- | subhook_x86.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/subhook_x86.c b/subhook_x86.c index 95c1f24..2560c28 100644 --- a/subhook_x86.c +++ b/subhook_x86.c @@ -140,8 +140,13 @@ SUBHOOK_EXPORT int SUBHOOK_API subhook_disasm(void *src, int *reloc_op_offset) { /* CALL rel32 */ {0xE8, 0, IMM32 | RELOC}, /* CALL r/m32 */ {0xFF, 2, MODRM | REG_OPCODE}, /* CMP r/m16/32, imm8*/ {0x83, 7, MODRM | REG_OPCODE | IMM8 }, + /* CMP r/m16/32, r16/32 */ {0x39, 0, MODRM}, /* DEC r/m16/32 */ {0xFF, 1, MODRM | REG_OPCODE }, + /* DEC r16/32 */ {0x48, 0, PLUS_R}, /* ENTER imm16, imm8 */ {0xC8, 0, IMM16 | IMM8}, + /* FLD m32fp */ {0xD9, 0, MODRM | REG_OPCODE}, + /* FLD m64fp */ {0xDD, 0, MODRM | REG_OPCODE}, + /* FLD m80fp */ {0xDB, 5, MODRM | REG_OPCODE}, /* INT 3 */ {0xCC, 0, 0}, /* JMP rel32 */ {0xE9, 0, IMM32 | RELOC}, /* JMP r/m32 */ {0xFF, 4, MODRM | REG_OPCODE}, |