diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-10-29 17:24:06 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-10-29 17:24:06 +0200 |
| commit | 7dc5359c2b10521696e7d251627eff029d53ee28 (patch) | |
| tree | 77c659d617b647c52d869dd84a561aa36440f74c /src/dynarec | |
| parent | e394903ccfc7a25ea07d701ae37275fb9f4aa36b (diff) | |
| download | box64-7dc5359c2b10521696e7d251627eff029d53ee28.tar.gz box64-7dc5359c2b10521696e7d251627eff029d53ee28.zip | |
Added support for MOVBE extension ([DYNAREC] too)
Diffstat (limited to 'src/dynarec')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_0f.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c index b1308b09..79578406 100755 --- a/src/dynarec/arm64/dynarec_arm64_0f.c +++ b/src/dynarec/arm64/dynarec_arm64_0f.c @@ -400,6 +400,31 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin SQRDMULH_16(q0, q0, q1); break; + case 0xF0: + INST_NAME("MOVBE Gd, Ed"); + nextop=F8; + GETGD; + if(MODREG) { + REVxw(gd, xRAX+(nextop&7)+(rex.b<<3)); + } else { + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 0); + LDRxw_U12(gd, ed, fixedaddress); + REVxw(gd, gd); + } + break; + case 0xF1: + INST_NAME("MOVBE Ed, Gd"); + nextop=F8; + GETGD; + if(MODREG) { // reg <= reg + REVxw(xRAX+(nextop&7)+(rex.b<<3), gd); + } else { // mem <= reg + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, NULL, 0, 0); + REVxw(x1, gd); + STRxw_U12(x1, ed, fixedaddress); + } + break; + default: DEFAULT; } |