diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-06-18 14:24:17 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-06-18 14:24:17 +0200 |
| commit | af2699ec216da0c2f26af827e33e528a72a8d4f8 (patch) | |
| tree | 7d4dcc4d289ed920043a19b0e92f11777ab1f356 /src | |
| parent | 17364dc4459a33b66c0eb3777c50dea641c4254d (diff) | |
| download | box64-af2699ec216da0c2f26af827e33e528a72a8d4f8.tar.gz box64-af2699ec216da0c2f26af827e33e528a72a8d4f8.zip | |
Added 67 66 89 opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64run6766.c | 19 |
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; } |