diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 11:41:15 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-26 11:41:15 +0100 |
| commit | aba3bcc81a687a3c6cdc8be0367445c2c1f0a03e (patch) | |
| tree | 5e16cbb4668b947ecbc22deb3fb79f1174c81ffe | |
| parent | 085529217e42aeeb02845abe8615887e59fa163e (diff) | |
| download | box64-aba3bcc81a687a3c6cdc8be0367445c2c1f0a03e.tar.gz box64-aba3bcc81a687a3c6cdc8be0367445c2c1f0a03e.zip | |
Added 66 8D and 66 E8 opcode
| -rw-r--r-- | src/emu/x64run66.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c index 8f93e27f..689897ce 100644 --- a/src/emu/x64run66.c +++ b/src/emu/x64run66.c @@ -33,6 +33,7 @@ int Run66(x64emu_t *emu, rex_t rex, int rep) uint8_t tmp8u, tmp8u2; int16_t tmp16s; uint16_t tmp16u, tmp16u2; + int32_t tmp32s; int64_t tmp64s; uint64_t tmp64u, tmp64u2, tmp64u3; reg64_t *oped, *opgd; @@ -225,6 +226,16 @@ int Run66(x64emu_t *emu, rex_t rex, int rep) GW->word[0] = EW->word[0]; break; + case 0x8D: /* LEA Gw,M */ + nextop = F8; + GETED(0); + GETGD; + if(rex.w) + GD->q[0] = (uint64_t)ED; + else + GD->word[0] = (uint16_t)(uintptr_t)ED; + break; + case 0x90: /* NOP */ break; @@ -540,6 +551,12 @@ int Run66(x64emu_t *emu, rex_t rex, int rep) case 0xDD: /* x87 opcdes */ return Run66DD(emu, rex); + case 0xE8: /* CALL Id */ + tmp32s = F32S; // call is relative + Push(emu, R_RIP); + R_RIP += tmp32s; + break; + case 0xF7: /* GRP3 Ew(,Iw) */ nextop = F8; tmp8u = (nextop>>3)&7; |