From a208def471b2d93fcc356f7f5b265e7dbd0e10f8 Mon Sep 17 00:00:00 2001 From: luigi__ Date: Fri, 5 Jun 2009 21:09:35 +0000 Subject: [PATCH] For immediate LDR, if we're loading from [PC + 0xXXX], print final offset instead of [PC + 0xXXX]. --- desmume/src/Disassembler.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/desmume/src/Disassembler.cpp b/desmume/src/Disassembler.cpp index d30d0234e..11f9d319c 100644 --- a/desmume/src/Disassembler.cpp +++ b/desmume/src/Disassembler.cpp @@ -2119,12 +2119,18 @@ return txt;} static char * OP_LDR_P_IMM_OFF(u32 adr, u32 i, char * txt) { - sprintf(txt, "LDR%s %s, [%s, #%X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], Registre[REG_POS(i,16)], (int)(i&0x7FF)); + if(REG_POS(i,16) == 15) + sprintf(txt, "LDR%s %s, [%08X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], (adr + 8 + (int)(i&0x7FF))); + else + sprintf(txt, "LDR%s %s, [%s, #%X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], Registre[REG_POS(i,16)], (int)(i&0x7FF)); return txt;} static char * OP_LDR_M_IMM_OFF(u32 adr, u32 i, char * txt) { - sprintf(txt, "LDR%s %s, [%s, -#%X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], Registre[REG_POS(i,16)], (int)(i&0x7FF)); + if(REG_POS(i,16) == 15) + sprintf(txt, "LDR%s %s, [%08X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], (adr + 8 - (int)(i&0x7FF))); + else + sprintf(txt, "LDR%s %s, [%s, -#%X]", Condition[CONDITION(i)], Registre[REG_POS(i,12)], Registre[REG_POS(i,16)], (int)(i&0x7FF)); return txt;} static char * OP_LDR_P_LSL_IMM_OFF(u32 adr, u32 i, char * txt)