]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
DISASM_FLAG_VAL_FORCE disassembler parameter: always show EA, even if it is simple...
authorToni Wilen <twilen@winuae.net>
Fri, 24 Nov 2023 19:08:26 +0000 (21:08 +0200)
committerToni Wilen <twilen@winuae.net>
Fri, 24 Nov 2023 19:08:26 +0000 (21:08 +0200)
disasm.cpp
include/disasm.h
od-win32/win32.cpp

index 63d477f26728a910be6cda5aee1c14204cca02fc..59a716800d0ea91b00a061dadcf1adad5c51729d 100644 (file)
@@ -212,7 +212,7 @@ static void showea_val(TCHAR *buffer, uae_u16 opcode, uaecptr addr, int size)
 #endif
 #endif
 
-       if (!(disasm_flags & DISASM_FLAG_VAL)) {
+       if (!(disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL))) {
                goto skip;
        }
 
@@ -449,7 +449,7 @@ uaecptr ShowEA_disp(uaecptr *pcp, uaecptr base, TCHAR *buffer, const TCHAR *name
                addr = base + outer;
 
                if (buffer) {
-                       if (disasm_flags & DISASM_FLAG_VAL) {
+                       if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                                _stprintf(p, disasm_lc_hex(_T(" == $%08X")), addr);
                                p += _tcslen(p);
                        }
@@ -472,13 +472,13 @@ uaecptr ShowEA_disp(uaecptr *pcp, uaecptr base, TCHAR *buffer, const TCHAR *name
                addr = base + (uae_s32)((uae_s8)disp8) + dispreg;
                if (buffer) {
                        if (pcrel) {
-                               if (disasm_flags & DISASM_FLAG_VAL) {
+                               if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                                        _stprintf(buffer, _T("(%s%s%s,$%02x=$%08x) == $%08x"), name, regstr, mult, (uae_u8)disp8, (*pcp) += disp8, addr);
                                } else {
                                        _stprintf(buffer, _T("(%s%s%s,$%02x=$%08x)"), name, regstr, mult, (uae_u8)disp8, (*pcp) += disp8);
                                }
                        } else {
-                               if (disasm_flags & DISASM_FLAG_VAL) {
+                               if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                                        _stprintf(buffer, _T("(%s%s%s,$%02x) == $%08x"), name, regstr, mult, (uae_u8)disp8, addr);
                                } else {
                                        _stprintf(buffer, _T("(%s%s%s,$%02x)"), name, regstr, mult, (uae_u8)disp8);
@@ -523,16 +523,25 @@ uaecptr ShowEA(void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode, wordsi
        case Aind:
                _stprintf(buffer, _T("(%c%d)"), disasm_areg, reg);
                addr = regs.regs[reg + 8];
+               if (disasm_flags & DISASM_FLAG_VAL_FORCE) {
+                       _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(" == $%08X")), addr);
+               }
                showea_val(buffer, opcode, addr, size);
                break;
        case Aipi:
                _stprintf(buffer, _T("(%c%d)+"), disasm_areg, reg);
                addr = regs.regs[reg + 8];
+               if (disasm_flags & DISASM_FLAG_VAL_FORCE) {
+                       _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(" == $%08X")), addr);
+               }
                showea_val(buffer, opcode, addr, size);
                break;
        case Apdi:
                _stprintf(buffer, _T("-(%c%d)"), disasm_areg, reg);
                addr = regs.regs[reg + 8] - datasizes[size];
+               if (disasm_flags & DISASM_FLAG_VAL_FORCE) {
+                       _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(" == $%08X")), addr);
+               }
                showea_val(buffer, opcode, addr, size);
                break;
        case Ad16:
@@ -545,7 +554,7 @@ uaecptr ShowEA(void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode, wordsi
                                _stprintf (offtxt, disasm_lc_hex(_T("$%04X")), disp16);
                        addr = m68k_areg (regs, reg) + disp16;
                        _stprintf(buffer, _T("(%c%d,%s)"), disasm_areg, reg, offtxt);
-                       if (disasm_flags & DISASM_FLAG_VAL) {
+                       if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                                _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(" == $%08X")), addr);
                        }
                        showea_val(buffer, opcode, addr, size);
@@ -564,7 +573,7 @@ uaecptr ShowEA(void *f, uaecptr pc, uae_u16 opcode, int reg, amodes mode, wordsi
                addr += (uae_s16)disp16;
                _stprintf(buffer, _T("(%s"), disasm_pcreg);
                _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(",$%04X)")), disp16 & 0xffff);
-               if (disasm_flags & DISASM_FLAG_VAL) {
+               if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                        _stprintf(buffer + _tcslen(buffer), disasm_lc_hex(_T(" == $%08X")), addr);
                }
                showea_val(buffer, opcode, addr, size);
@@ -1692,7 +1701,7 @@ static void resolve_if_jmp(TCHAR *s, uae_u32 addr)
        if (opcode == 0x4ef9) { // JMP x.l
                TCHAR *p = s + _tcslen(s);
                uae_u32 addr2 = get_long_debug(addr + 2);
-               if (disasm_flags & DISASM_FLAG_VAL) {
+               if (disasm_flags & (DISASM_FLAG_VAL_FORCE | DISASM_FLAG_VAL)) {
                        _stprintf(p, disasm_lc_hex(_T(" == $%08X ")), addr2);
                        
                }
index a877c2d08bc8f3ffe9b6f415be244be4163edb47..ecc72863afc4b3d7f541a5d0a4ea778d5252a555 100644 (file)
@@ -25,3 +25,4 @@ extern TCHAR disasm_hexprefix[3];
 #define DISASM_FLAG_VAL 128
 #define DISASM_FLAG_WORDS 256
 #define DISASM_FLAG_ABSSHORTLONG 512
+#define DISASM_FLAG_VAL_FORCE 1024
index 829011b04cd54e2dbb017bb45624b64d50a93522..a12403d71b8d37d02e0f54160d13fd518b127224 100644 (file)
@@ -5791,7 +5791,8 @@ static void target_load_debugger_config(void)
 {
        int size;
 
-       disasm_flags = DISASM_FLAG_LC_MNEMO | DISASM_FLAG_LC_REG | DISASM_FLAG_LC_SIZE | DISASM_FLAG_LC_HEX | DISASM_FLAG_CC | DISASM_FLAG_EA | DISASM_FLAG_VAL | DISASM_FLAG_WORDS;
+       disasm_flags = DISASM_FLAG_LC_MNEMO | DISASM_FLAG_LC_REG | DISASM_FLAG_LC_SIZE | DISASM_FLAG_LC_HEX |
+               DISASM_FLAG_CC | DISASM_FLAG_EA | DISASM_FLAG_VAL | DISASM_FLAG_WORDS;
        disasm_min_words = 5;
        disasm_max_words = 16;
        disasm_hexprefix[0] = '$';