diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-16 16:37:37 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-16 16:37:37 +0100 |
| commit | 551542f99a2bcd690f19e1bb17ac16172feef583 (patch) | |
| tree | 2619575ab420a80d4de109833f0e1cb550d434ab /src/dynarec/arm64_printer.c | |
| parent | 1e5bfcdbcde5878cbe19770d5b3183e631e6c795 (diff) | |
| download | box64-551542f99a2bcd690f19e1bb17ac16172feef583.tar.gz box64-551542f99a2bcd690f19e1bb17ac16172feef583.zip | |
[DYNAREC] Added 85 opcode
Diffstat (limited to 'src/dynarec/arm64_printer.c')
| -rwxr-xr-x | src/dynarec/arm64_printer.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/dynarec/arm64_printer.c b/src/dynarec/arm64_printer.c index 56dfd5c3..2a66f553 100755 --- a/src/dynarec/arm64_printer.c +++ b/src/dynarec/arm64_printer.c @@ -258,6 +258,31 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr) return buff; } // ---- LOGIC + if(isMask(opcode, "f11100100Nrrrrrrssssssnnnnnddddd", &a)) { + int i = (a.N<<12)|(imms<<6)|immr; + if(sf==0 && a.N==1) + snprintf(buff, sizeof(buff), "invalid ANDS %s, %s, 0x%x", Wt[Rd], Wt[Rn], i); + else if(Rd==31) + snprintf(buff, sizeof(buff), "TST %s, 0x%x", sf?Xt[Rn]:Wt[Rn], i); + else + snprintf(buff, sizeof(buff), "ANDS %s, %s, 0x%x", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], i); + return buff; + } + if(isMask(opcode, "f1101010hh0mmmmmiiiiiinnnnnddddd", &a)) { + const char* shifts[] = { "LSL", "LSR", "ASR", "ROR" }; + if(shift==0 && imm==0) { + if(Rd==31) + snprintf(buff, sizeof(buff), "TST %s, %s", sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm]); + else + snprintf(buff, sizeof(buff), "ANDS %s, %s, %s", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm]); + } else { + if(Rd==31) + snprintf(buff, sizeof(buff), "TST %s, %s, %s %d", sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm], shifts[shift], imm); + else + snprintf(buff, sizeof(buff), "ANDS %s, %s, %s, %s %d", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm], shifts[shift], imm); + } + return buff; + } // ---- SHIFT if(isMask(opcode, "f10100110Nrrrrrrssssssnnnnnddddd", &a)) { |