about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-07-03 10:58:41 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-07-03 10:58:41 +0200
commite38c663dea00999db39aa6747d8ba18cd4806647 (patch)
tree3aa85ec95c0207740138bfc7a620bce84861ec7a
parentb1873b21b6caf3855a1344d742b144f80767126e (diff)
downloadbox64-e38c663dea00999db39aa6747d8ba18cd4806647.tar.gz
box64-e38c663dea00999db39aa6747d8ba18cd4806647.zip
Added 67 38-3D opcodes (for #323)
-rw-r--r--src/emu/x64run67.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/emu/x64run67.c b/src/emu/x64run67.c
index f17e5e6d..1075dfa2 100644
--- a/src/emu/x64run67.c
+++ b/src/emu/x64run67.c
@@ -105,6 +105,45 @@ int Run67(x64emu_t *emu, rex_t rex, int rep)
     GO(0x28, sub)                   /* SUB 0x28 -> 0x2D */

     GO(0x30, xor)                   /* XOR 0x30 -> 0x35 */

     #undef GO

+    case 0x38:

+        nextop = F8;

+        GETEB32(0);

+        GETGB;

+        cmp8(emu, EB->byte[0], GB);

+        break;

+    case 0x39:

+        nextop = F8;

+        GETED32(0);

+        GETGD;

+        if(rex.w)

+            cmp64(emu, ED->q[0], GD->q[0]);

+        else

+            cmp32(emu, ED->dword[0], GD->dword[0]);

+        break;

+    case 0x3A:

+        nextop = F8;

+        GETEB32(0);

+        GETGB;

+        cmp8(emu, GB, EB->byte[0]);

+        break;

+    case 0x3B:

+        nextop = F8;

+        GETED32(0);

+        GETGD;

+        if(rex.w)

+            cmp64(emu, GD->q[0], ED->q[0]);

+        else

+            cmp32(emu, GD->dword[0], ED->dword[0]);

+        break;

+    case 0x3C:

+        R_AL = cmp8(emu, R_AL, F8);

+        break;

+    case 0x3D:

+        if(rex.w)

+            cmp64(emu, R_RAX, F32S64);

+        else

+            cmp32(emu, R_EAX, F32);

+        break;

 

     case 0x66:

         return Run6766(emu, rex, rep);