From 23e7d5c370f672773f04f70da2feb80a3b99b764 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 5 Apr 2021 19:04:16 +0200 Subject: Added 67 80/8B opcodes --- src/emu/x64run67.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/emu/x64run67.c b/src/emu/x64run67.c index 10af9a5b..e074be4b 100644 --- a/src/emu/x64run67.c +++ b/src/emu/x64run67.c @@ -96,6 +96,22 @@ int Run67(x64emu_t *emu, rex_t rex) GO(0x30, xor) /* XOR 0x30 -> 0x35 */ #undef GO + case 0x80: /* GRP Eb,Ib */ + nextop = F8; + GETEB32(1); + tmp8u = F8; + switch((nextop>>3)&7) { + case 0: EB->byte[0] = add8(emu, EB->byte[0], tmp8u); break; + case 1: EB->byte[0] = or8(emu, EB->byte[0], tmp8u); break; + case 2: EB->byte[0] = adc8(emu, EB->byte[0], tmp8u); break; + case 3: EB->byte[0] = sbb8(emu, EB->byte[0], tmp8u); break; + case 4: EB->byte[0] = and8(emu, EB->byte[0], tmp8u); break; + case 5: EB->byte[0] = sub8(emu, EB->byte[0], tmp8u); break; + case 6: EB->byte[0] = xor8(emu, EB->byte[0], tmp8u); break; + case 7: cmp8(emu, EB->byte[0], tmp8u); break; + } + break; + case 0x88: /* MOV Eb,Gb */ nextop = F8; GETEB32(0); @@ -122,6 +138,15 @@ int Run67(x64emu_t *emu, rex_t rex) GETGB; GB = EB->byte[0]; break; + case 0x8B: /* MOV Gd,Ed */ + nextop = F8; + GETED32(0); + GETGD; + if(rex.w) + GD->q[0] = ED->q[0]; + else + GD->q[0] = ED->dword[0]; + break; case 0x8D: /* LEA Gd,M */ nextop = F8; -- cgit 1.4.1