diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-22 12:16:23 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-22 12:16:23 +0100 |
| commit | 466a8cb1079785b7275e78cd30b1a9d2d4247a6d (patch) | |
| tree | abc8c525f3cc66e046839ed1782b872477b67b5d /src | |
| parent | 23c9d574d9cc85f60ac0b81a24d50a8e80d93eb0 (diff) | |
| download | box64-466a8cb1079785b7275e78cd30b1a9d2d4247a6d.tar.gz box64-466a8cb1079785b7275e78cd30b1a9d2d4247a6d.zip | |
[DYNAREC] Added 66 89/8B opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_66.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_66.c b/src/dynarec/dynarec_arm64_66.c index 3446350b..ba7a90be 100755 --- a/src/dynarec/dynarec_arm64_66.c +++ b/src/dynarec/dynarec_arm64_66.c @@ -315,6 +315,36 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin GWBACK; break; + case 0x89: + INST_NAME("MOV Ew, Gw"); + nextop = F8; + GETGD; // don't need GETGW here + if(MODREG) { + ed = xRAX+(nextop&7)+(rex.b<<3); + if(ed!=gd) { + BFIx(ed, gd, 0, 16); + } + } else { + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<1, 1, rex, 0, 0); + STRH_U12(gd, ed, fixedaddress); + } + break; + case 0x8B: + INST_NAME("MOV Gw, Ew"); + nextop = F8; + GETGD; // don't need GETGW neither + if(MODREG) { + ed = xRAX+(nextop&7)+(rex.b<<3); + if(ed!=gd) { + BFIx(gd, ed, 0, 16); + } + } else { + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<1, 1, rex, 0, 0); + LDRH_U12(x1, ed, fixedaddress); + BFIx(gd, x1, 0, 16); + } + break; + case 0x90: INST_NAME("NOP"); break; |