about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-03-05 14:38:00 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-03-05 14:38:00 +0100
commit430b7c665e8aac039b25ceb508de893096482aab (patch)
tree97a6bdcace1b79c9812b5f610466aa4cfd738b77 /src
parent90fe73333c425dafb77729569cf94ecfda6593d2 (diff)
downloadbox64-430b7c665e8aac039b25ceb508de893096482aab.tar.gz
box64-430b7c665e8aac039b25ceb508de893096482aab.zip
[ARM64] Added printer for STRB Reg, [Reg, Reg]
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/arm64_printer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/dynarec/arm64/arm64_printer.c b/src/dynarec/arm64/arm64_printer.c
index b07d40a4..9e47c5ea 100755
--- a/src/dynarec/arm64/arm64_printer.c
+++ b/src/dynarec/arm64/arm64_printer.c
@@ -236,6 +236,15 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
             snprintf(buff, sizeof(buff), "STR %s, [%s, %s, %s %d]", (size==2)?Wt[Rt]:Xt[Rt], XtSp[Rn], ((option&1)==0)?Wt[Rm]:Xt[Rm], extend[option], amount);

         return buff;

     }

+    if(isMask(opcode, "00111000001mmmmmoooS10nnnnnttttt", &a)) {

+        const char* extend[] = {"?0", "?1", "UXTW", "LSL", "?4", "?5", "SXTW", "SXTX"};

+        int amount = a.S;

+        if(option==3 && !amount)

+            snprintf(buff, sizeof(buff), "STRB %s, [%s, %s]", Wt[Rt], XtSp[Rn], ((option&1)==0)?Wt[Rm]:Xt[Rm]);

+        else

+            snprintf(buff, sizeof(buff), "STRB %s, [%s, %s, %s %d]", Wt[Rt], XtSp[Rn], ((option&1)==0)?Wt[Rm]:Xt[Rm], extend[option], amount);

+        return buff;

+    }

     if(isMask(opcode, "0x111000010iiiiiiiii01nnnnnttttt", &a)) {

         int size = a.x;

         int offset = signExtend(imm, 9);