diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-04 11:45:27 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-04 11:45:27 +0100 |
| commit | ca9ca0ca48b9cd3b0d112c1adf5b7e6a5681e3ff (patch) | |
| tree | 3b5bbe8f177b064d8406b0d9111804f27cb8c5ba /src | |
| parent | 2aa303bb024fe68ae78dcd489010a3713aa4ae95 (diff) | |
| download | box64-ca9ca0ca48b9cd3b0d112c1adf5b7e6a5681e3ff.tar.gz box64-ca9ca0ca48b9cd3b0d112c1adf5b7e6a5681e3ff.zip | |
Added Rex 50..5F PUSH/POP opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64run.c | 29 |
1 files changed, 29 insertions, 0 deletions
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; |