diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-21 16:12:03 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-21 16:12:03 +0100 |
| commit | f01e987d31fa90cdadd523cca65b3f78f825dfd2 (patch) | |
| tree | 9b55c64d69bb095d7402ba11a53d598d7798f6b7 | |
| parent | eb96a1c03afbf23fb94087e83ebd8b422b14a385 (diff) | |
| download | box64-f01e987d31fa90cdadd523cca65b3f78f825dfd2.tar.gz box64-f01e987d31fa90cdadd523cca65b3f78f825dfd2.zip | |
[DYNAREC] Added C6 opcode
| -rwxr-xr-x | src/dynarec/dynarec_arm64_00.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_00.c b/src/dynarec/dynarec_arm64_00.c index 652698f5..338b4c3b 100755 --- a/src/dynarec/dynarec_arm64_00.c +++ b/src/dynarec/dynarec_arm64_00.c @@ -983,6 +983,28 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin *ok = 0; break; + case 0xC6: + INST_NAME("MOV Eb, Ib"); + nextop=F8; + if(MODREG) { // reg <= u8 + u8 = F8; + if(!rex.rex) { + ed = (nextop&7); + eb1 = xRAX+(ed&3); // Ax, Cx, Dx or Bx + eb2 = (ed&4)>>2; // L or H + } else { + eb1 = xRAX+(nextop&7)+(rex.b<<3); + eb2 = 0; + } + MOV32w(x3, u8); + BFIx(eb1, x3, eb2*8, 8); + } else { // mem <= u8 + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0xfff, 0, rex, 0, 1); + u8 = F8; + MOV32w(x3, u8); + STRB_U12(x3, ed, fixedaddress); + } + break; case 0xC7: INST_NAME("MOV Ed, Id"); nextop=F8; |