From 6d8efdd48384e5631d437aede17b3af51bdd6877 Mon Sep 17 00:00:00 2001 From: mlong Date: Sat, 23 Jan 2021 14:58:12 -0600 Subject: [PATCH] Fixed labels on non-data members of assembly. --- src/binaryfile/disassembler.cxx | 4 +++- src/ui/viewers/disassemblerviewer.cpp | 28 +++++++++++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/binaryfile/disassembler.cxx b/src/binaryfile/disassembler.cxx index aa09e5b..5560a07 100644 --- a/src/binaryfile/disassembler.cxx +++ b/src/binaryfile/disassembler.cxx @@ -1,6 +1,7 @@ #include "disassembler.h" #include #include +#include #include @@ -134,7 +135,8 @@ QList Disassembler::disassemble(quint16 from, quint16 to, } #endif - qSort(retval); + // qSort(retval); + std::sort(retval.begin(),retval.end()); // QStringList hexdump; // foreach (quint16 adr,m_memusagemap.addressesWhichContain(Operation)) diff --git a/src/ui/viewers/disassemblerviewer.cpp b/src/ui/viewers/disassemblerviewer.cpp index e4f690d..d0bdacf 100644 --- a/src/ui/viewers/disassemblerviewer.cpp +++ b/src/ui/viewers/disassemblerviewer.cpp @@ -121,7 +121,7 @@ void DisassemblerViewer::handleDisassembleRequest(QList addresses) disassemble(addresses); strings += getDisassemblyStrings(); - // qSort(strings); + // qSort(strings); strings.sort(); strings.removeDuplicates(); @@ -180,9 +180,21 @@ void DisassemblerViewer::disassemble(QList entryPoints) { if (raw.contains("BRA")) { ds += "\n"; } //TODO: Temp for spacing if (raw.contains("BRK")) { ds += "\n"; } //TODO: Temp for spacing + QString newline; - - QString newline = QString("%1: %2 %3").arg(di.hexAddress()).arg(di.hexString()).arg(ds); + if (m_bfm->assemblerSymbols()->hasAssemSymbolAtAddress(di.address())) + { + int loc = m_bfm->assemblerSymbols()->locationOfSymbolAtAddress(di.address()); + newline += (QString("%1: [%2]\n %3 %4") + .arg(di.hexAddress()) + .arg(m_bfm->assemblerSymbols()->at(loc).name) + .arg(di.hexString()).arg(ds) + ); + } + else + { + newline += QString("%1: %2 %3").arg(di.hexAddress()).arg(di.hexString()).arg(ds); + } formattedLines.append(newline); } @@ -202,8 +214,8 @@ void DisassemblerViewer::disassemble(QList entryPoints) { newline = QString("%1: .Byte $%2 ; %3").arg(uint16ToHex(idx)) .arg(uint8ToHex(m_mem.at(idx))) .arg(m_bfm->assemblerSymbols()->at(loc).name);; - } else - if (m_bfm->assemblerSymbols()->at(loc).symbolsize == SizeWord) + } + else if (m_bfm->assemblerSymbols()->at(loc).symbolsize == SizeWord) { newline = QString("%1: .Word $%2 ; %3").arg(uint16ToHex(idx)) .arg(uint16ToHex(m_mem.at(idx) + (m_mem.at(idx+1)*256))) @@ -215,14 +227,10 @@ void DisassemblerViewer::disassemble(QList entryPoints) { usedefault = true; } } - else - { - usedefault = true; - } if (usedefault) { - newline = QString("%1: %2 %3\t(%4)\t'%5'").arg(uint16ToHex(idx)) + newline += QString("%1: %2 %3\t(%4)\t'%5'").arg(uint16ToHex(idx)) .arg(uint8ToHex(m_mem.at(idx))) .arg(makeDescriptorStringForVal(m_mem.at(idx))) .arg(dis.getMnemonicForOp(m_mem.at(idx)))