From ca9ca0ca48b9cd3b0d112c1adf5b7e6a5681e3ff Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Thu, 4 Mar 2021 11:45:27 +0100 Subject: Added Rex 50..5F PUSH/POP opcodes --- src/emu/x64run.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/emu/x64run.c b/src/emu/x64run.c index b3ccd541..10ca8b10 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -167,6 +167,35 @@ x64emurun: case 0x4F: /* Another REX */ --R_RIP; break; + case 0x54: /* PUSH ESP */ + if(rex.b) + Push(emu, R_R12); + else { + tmp64u = R_RSP; + Push(emu, tmp64u); + } + break; + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x55: + case 0x56: + case 0x57: /* PUSH Reg */ + tmp8u = (opcode&7)+(rex.b<<3); + Push(emu, emu->regs[tmp8u].q[0]); + break; + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: /* POP ESP */ + case 0x5D: + case 0x5E: + case 0x5F: /* POP Reg */ + tmp8u = (opcode&7)+(rex.b<<3); + emu->regs[tmp8u].q[0] = Pop(emu); + break; case 0x89: /* MOV Ed,Gd */ nextop = F8; -- cgit 1.4.1