diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-09 21:19:15 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-09 21:19:15 +0100 |
| commit | 044b88dbce9fd4bb1d02c997d10d273e28a9c3ef (patch) | |
| tree | d883df31bf2f2a74b0eae9cb548f47c52a0a73a3 /src | |
| parent | acf06e6a94df69a27ad03d4a76d94c62348a8c22 (diff) | |
| download | box64-044b88dbce9fd4bb1d02c997d10d273e28a9c3ef.tar.gz box64-044b88dbce9fd4bb1d02c997d10d273e28a9c3ef.zip | |
Added 6A and 6B opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64run.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/emu/x64run.c b/src/emu/x64run.c index f3269a9f..dbf257c6 100755 --- a/src/emu/x64run.c +++ b/src/emu/x64run.c @@ -35,9 +35,10 @@ int Run(x64emu_t *emu, int step) reg64_t *oped, *opgd; uint8_t tmp8u, tmp8u2; int8_t tmp8s; + int32_t tmp32s; uint32_t tmp32u; + int64_t tmp64s; uint64_t tmp64u; - int32_t tmp32s; rex_t rex; int rep; // 0 none, 1=F2 prefix, 2=F3 prefix int unimp = 0; @@ -270,6 +271,20 @@ x64emurun: else GD->dword[0] = imul32(emu, ED->dword[0], tmp64u); break; + case 0x6A: /* Push Ib */ + tmp64s = F8S; + Push(emu, (uint64_t)tmp64s); + break; + case 0x6B: /* IMUL Gd,Ed,Ib */ + nextop = F8; + GETED(1); + GETGD; + tmp64s = F8S; + if(rex.w) + GD->q[0] = imul64(emu, ED->q[0], (uint64_t)tmp64s); + else + GD->q[0] = imul32(emu, ED->dword[0], (uint32_t)tmp64s); + break; GOCOND(0x70 , tmp8s = F8S; CHECK_FLAGS(emu); |