summaryrefslogtreecommitdiff
path: root/src/citra_qt/debugger/disassembler.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2014-09-08 00:10:13 -0400
committerGravatar bunnei2014-09-08 00:10:13 -0400
commit335082e74e5f015450f1ad57cb90d1f8fd4afbdb (patch)
tree576c57f45d933885d31f7eddfbf85167bc1b88ac /src/citra_qt/debugger/disassembler.cpp
parentMerge pull request #87 from archshift/remove-cruft (diff)
parentcore: Make the ARM disassembler use std::string internally (diff)
downloadyuzu-335082e74e5f015450f1ad57cb90d1f8fd4afbdb.tar.gz
yuzu-335082e74e5f015450f1ad57cb90d1f8fd4afbdb.tar.xz
yuzu-335082e74e5f015450f1ad57cb90d1f8fd4afbdb.zip
Merge pull request #95 from lioncash/disassembler
core: Make the ARM disassembler use std::string internally
Diffstat (limited to 'src/citra_qt/debugger/disassembler.cpp')
-rw-r--r--src/citra_qt/debugger/disassembler.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/citra_qt/debugger/disassembler.cpp b/src/citra_qt/debugger/disassembler.cpp
index 507a35718..856baf63d 100644
--- a/src/citra_qt/debugger/disassembler.cpp
+++ b/src/citra_qt/debugger/disassembler.cpp
@@ -36,22 +36,20 @@ QVariant DisassemblerModel::data(const QModelIndex& index, int role) const {
36 switch (role) { 36 switch (role) {
37 case Qt::DisplayRole: 37 case Qt::DisplayRole:
38 { 38 {
39 static char result[255];
40
41 u32 address = base_address + index.row() * 4; 39 u32 address = base_address + index.row() * 4;
42 u32 instr = Memory::Read32(address); 40 u32 instr = Memory::Read32(address);
43 ARM_Disasm::disasm(address, instr, result); 41 std::string disassembly = ARM_Disasm::Disassemble(address, instr);
44 42
45 if (index.column() == 0) { 43 if (index.column() == 0) {
46 return QString("0x%1").arg((uint)(address), 8, 16, QLatin1Char('0')); 44 return QString("0x%1").arg((uint)(address), 8, 16, QLatin1Char('0'));
47 } else if (index.column() == 1) { 45 } else if (index.column() == 1) {
48 return QString::fromLatin1(result); 46 return QString::fromStdString(disassembly);
49 } else if (index.column() == 2) { 47 } else if (index.column() == 2) {
50 if(Symbols::HasSymbol(address)) { 48 if(Symbols::HasSymbol(address)) {
51 TSymbol symbol = Symbols::GetSymbol(address); 49 TSymbol symbol = Symbols::GetSymbol(address);
52 return QString("%1 - Size:%2").arg(QString::fromStdString(symbol.name)) 50 return QString("%1 - Size:%2").arg(QString::fromStdString(symbol.name))
53 .arg(symbol.size / 4); // divide by 4 to get instruction count 51 .arg(symbol.size / 4); // divide by 4 to get instruction count
54 } else if (ARM_Disasm::decode(instr) == OP_BL) { 52 } else if (ARM_Disasm::Decode(instr) == OP_BL) {
55 u32 offset = instr & 0xFFFFFF; 53 u32 offset = instr & 0xFFFFFF;
56 54
57 // Sign-extend the 24-bit offset 55 // Sign-extend the 24-bit offset