aboutsummaryrefslogtreecommitdiff
path: root/subhook_x86.c
diff options
context:
space:
mode:
authorSilent <zdanio95@gmail.com>2020-10-30 22:38:26 +0100
committerSilent <zdanio95@gmail.com>2020-10-31 11:43:09 +0100
commit9024067e9d065e9df777d3c87df409f1293c474d (patch)
treea996ddd676b072ce2a645e37d729ed8102cd5fbc /subhook_x86.c
parent4d0c8c2499fa8ec9dd450f075a79211bcced5c35 (diff)
downloadsubhook-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.c5
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},