about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-06-18 14:24:17 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-06-18 14:24:17 +0200
commitaf2699ec216da0c2f26af827e33e528a72a8d4f8 (patch)
tree7d4dcc4d289ed920043a19b0e92f11777ab1f356 /src
parent17364dc4459a33b66c0eb3777c50dea641c4254d (diff)
downloadbox64-af2699ec216da0c2f26af827e33e528a72a8d4f8.tar.gz
box64-af2699ec216da0c2f26af827e33e528a72a8d4f8.zip
Added 67 66 89 opcode
Diffstat (limited to 'src')
-rw-r--r--src/emu/x64run6766.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/emu/x64run6766.c b/src/emu/x64run6766.c
index ad44f8c4..35219b2c 100644
--- a/src/emu/x64run6766.c
+++ b/src/emu/x64run6766.c
@@ -57,10 +57,11 @@ uintptr_t Run6766(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
     }
     // REX prefix before the 66 are ignored
     rex.rex = 0;
-    while(opcode>=0x40 && opcode<=0x4f) {
-        rex.rex = opcode;
-        opcode = F8;
-    }
+    if(!rex.is32bits)
+        while(opcode>=0x40 && opcode<=0x4f) {
+            rex.rex = opcode;
+            opcode = F8;
+        }
 
     switch(opcode) {
 
@@ -71,6 +72,16 @@ uintptr_t Run6766(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
         return Run67660F(emu, rex, addr);
         #endif
 
+    case 0x89:                              /* MOV Ew,Gw */
+        nextop = F8;
+        GETEW32(0);
+        GETGW;
+        if(rex.w)
+            EW->q[0] = GW->q[0];
+        else
+            EW->word[0] = GW->word[0];
+        break;
+
     default:
         return 0;
     }