DISASM_FLAG_VAL_FORCE disassembler parameter: always show EA, even if it is simple (An)

This commit is contained in:
Toni Wilen 2023-11-24 21:08:26 +02:00
parent a253ff3c4a
commit 16db420ce3
3 changed files with 19 additions and 8 deletions

View 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);
}

View 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

View 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] = '$';