diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-04-02 11:31:04 +0000 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-04-02 11:31:04 +0000 |
| commit | abf6e4856c62db53eba7b5a06e9a83d234cad8c8 (patch) | |
| tree | a7f312135a6289e16e8dd8a51997545e437ca52c /src | |
| parent | 518e6782d87eb2923fef7f36e49992d0aa195182 (diff) | |
| download | box64-abf6e4856c62db53eba7b5a06e9a83d234cad8c8.tar.gz box64-abf6e4856c62db53eba7b5a06e9a83d234cad8c8.zip | |
[TRACE] Improved trace with xmm registers
Diffstat (limited to 'src')
| -rwxr-xr-x | src/emu/x64emu.c | 10 | ||||
| -rwxr-xr-x | src/emu/x64emu_private.h | 3 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c index eca8ee1d..2e869225 100755 --- a/src/emu/x64emu.c +++ b/src/emu/x64emu.c @@ -413,8 +413,14 @@ const char* DumpCPURegs(x64emu_t* emu, uintptr_t ip) } if(trace_xmm) { // do xmm reg if needed - for(int i=0; i<8; ++i) { - sprintf(tmp, "%d:%016lx%016lx", i, emu->xmm[i].q[1], emu->xmm[i].q[0]); + for(int i=0; i<16; ++i) { + if (trace_regsdiff && (emu->old_xmm[i].q[0] != emu->xmm[i].q[0] || emu->old_xmm[i].q[1] != emu->xmm[i].q[1])) { + sprintf(tmp, "\e[1;35m%02d:%016lx-%016lx\e[m", i, emu->xmm[i].q[1], emu->xmm[i].q[0]); + emu->old_xmm[i].q[0] = emu->xmm[i].q[0]; + emu->old_xmm[i].q[1] = emu->xmm[i].q[1]; + } else { + sprintf(tmp, "%02d:%016lx-%016lx", i, emu->xmm[i].q[1], emu->xmm[i].q[0]); + } strcat(buff, tmp); if ((i&3)==3) strcat(buff, "\n"); else strcat(buff, " "); } diff --git a/src/emu/x64emu_private.h b/src/emu/x64emu_private.h index a398d34e..9e7b599e 100755 --- a/src/emu/x64emu_private.h +++ b/src/emu/x64emu_private.h @@ -89,6 +89,9 @@ typedef struct x64emu_s { int quitonexit; // quit if exit/_exit is called int longjmp; // if quit because of longjmp x64test_t test; // used for dynarec testing + #ifdef HAVE_TRACE + sse_regs_t old_xmm[16]; + #endif // scratch stack, used for alignement of double and 64bits ints on arm. 200 elements should be enough uint64_t scratch[200]; // local stack, do be deleted when emu is freed |