diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-09-28 15:13:57 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-09-28 15:13:57 +0200 |
| commit | 12795ea4913e2170cccd49153d13589e36707534 (patch) | |
| tree | 6940d09307402ab6065fc0cda0894a3673c01fab /src | |
| parent | c0b143043f7d8273fb44e30de4b77de84d58ce1f (diff) | |
| download | box64-12795ea4913e2170cccd49153d13589e36707534.tar.gz box64-12795ea4913e2170cccd49153d13589e36707534.zip | |
Slight better trace for pop r15
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64run_private.c | 9 |
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: "); |