From 044b88dbce9fd4bb1d02c997d10d273e28a9c3ef Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 9 Mar 2021 21:19:15 +0100 Subject: Added 6A and 6B opcodes --- src/emu/x64run.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') 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); -- cgit 1.4.1