about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-09-28 15:13:57 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-09-28 15:13:57 +0200
commit12795ea4913e2170cccd49153d13589e36707534 (patch)
tree6940d09307402ab6065fc0cda0894a3673c01fab /src
parentc0b143043f7d8273fb44e30de4b77de84d58ce1f (diff)
downloadbox64-12795ea4913e2170cccd49153d13589e36707534.tar.gz
box64-12795ea4913e2170cccd49153d13589e36707534.zip
Slight better trace for pop r15
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64run_private.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c
index adf90ee3..3b27f38c 100755
--- a/src/emu/x64run_private.c
+++ b/src/emu/x64run_private.c
@@ -1062,9 +1062,18 @@ void PrintTrace(x64emu_t* emu, uintptr_t ip, int dynarec)
         } else {
             printf_log(LOG_NONE, "%s", DecodeX64Trace(my_context->dec, ip));
             uint8_t peek = PK(0);
+            rex_t rex = {0};
+            if(peek>=0x40 && peek<=0x4f) {
+                rex.rex = peek;
+                ip++;
+                peek = PK(0);
+            }
             if(peek==0xC3 || peek==0xC2 || (peek==0xF3 && PK(1)==0xC3)) {
                 printf_log(LOG_NONE, " => %p", *(void**)(R_RSP));
                 printFunctionAddr(*(uintptr_t*)(R_RSP), "=> ");
+            } else if(peek==0x57 && rex.b) {
+                printf_log(LOG_NONE, " => STACK_TOP: %p", *(void**)(R_RSP));
+                printFunctionAddr(ip, "here: ");
             } else if(peek==0x55 || peek==0x53) {
                 printf_log(LOG_NONE, " => STACK_TOP: %p", *(void**)(R_RSP));
                 printFunctionAddr(ip, "here: ");