Debugger: Show raw opcode bytes in disassembler view

Change-Id: I420dd5e9af4a92c84d53dbd52837be8f84440995
Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
hjk
2014-04-30 14:56:51 +02:00
parent 0c294aa1ed
commit 84f1fcc773
5 changed files with 57 additions and 24 deletions

View File

@@ -170,17 +170,22 @@ void DisassemblerLines::appendUnparsed(const QString &unparsed)
line = line.mid(3);
if (line.startsWith(QLatin1String("0x"))) {
// Address line. Split at the tab.
int tab = line.indexOf(QLatin1Char('\t'));
if (tab == -1) {
int tab1 = line.indexOf(QLatin1Char('\t'));
if (tab1 == -1) {
appendComment(line);
return;
}
QString address = line.left(tab);
int tab2 = line.indexOf(QLatin1Char('\t'), tab1 + 1);
if (tab2 == -1)
tab2 = tab1;
QString address = line.left(tab1);
if (address.endsWith(QLatin1Char(':')))
address.chop(1);
int pos1 = address.indexOf(QLatin1Char('<')) + 1;
DisassemblerLine dl;
dl.data = line.mid(tab).trimmed();
dl.bytes = line.mid(tab1, tab2 - tab1).trimmed();
m_bytesLength = qMax(m_bytesLength, tab2 - tab1);
dl.data = line.mid(tab2).trimmed();
if (pos1 && address.indexOf(QLatin1String("<UNDEFINED> instruction:")) == -1) {
if (address.endsWith(QLatin1Char('>')))
address.chop(1);
@@ -213,7 +218,7 @@ void DisassemblerLines::appendUnparsed(const QString &unparsed)
}
}
QString DisassemblerLine::toString() const
QString DisassemblerLine::toString(int maxOp) const
{
const QString someSpace = _(" ");
QString str;
@@ -224,7 +229,8 @@ QString DisassemblerLine::toString() const
str += _("<+0x%2> ").arg(offset, 4, 16, QLatin1Char('0'));
else
str += _(" ");
str += _(" ");
str += _(" %1 ").arg(bytes);
str += QString(maxOp - bytes.size(), QLatin1Char(' '));
str += data;
} else if (isCode()) {
if (hunk)
@@ -238,5 +244,15 @@ QString DisassemblerLine::toString() const
return str;
}
QString DisassemblerLines::toString() const
{
QString str;
for (int i = 0, n = size(); i != n; ++i) {
str += m_data.at(i).toString(m_bytesLength);
str += QLatin1Char('\n');
}
return str;
}
} // namespace Internal
} // namespace Debugger