diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-23 12:25:54 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-23 12:25:54 +0100 |
| commit | 9fb2cb86ed87804c41a68601d2aecf3409eb893e (patch) | |
| tree | 87f446ba1439a0ed660bdc85d2953fd741dce5f7 /src | |
| parent | f6b646ef674032871ffb9a8cbbb960f11f835920 (diff) | |
| download | box64-9fb2cb86ed87804c41a68601d2aecf3409eb893e.tar.gz box64-9fb2cb86ed87804c41a68601d2aecf3409eb893e.zip | |
[DYNAREC] Added 66 0F BE opcode
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_660f.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index e708694e..bdf29b01 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -392,6 +392,27 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n BFIw(xFlags, x1, F_ZF, 1); SET_DFNONE(x1); break; + case 0xBE: + INST_NAME("MOVSX Gw, Eb"); + nextop = F8; + GETGD; + if(MODREG) { + if(rex.rex) { + ed = xRAX+(nextop&7)+(rex.b<<3); + eb1=ed; + eb2=0; + } else { + ed = (nextop&7); + eb1 = xRAX+(ed&3); // Ax, Cx, Dx or Bx + eb2 = (ed&4)>>2; // L or H + } + SBFXw(x1, eb1, eb2, 8); + } else { + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff, 0, rex, 0, 0); + LDRSBw_U12(x1, ed, fixedaddress); + } + BFIx(gd, x1, 0, 16); + break; case 0xD6: INST_NAME("MOVQ Ex, Gx"); |