diff options
Diffstat (limited to 'src/citra_qt/debugger/registers.cpp')
| -rw-r--r-- | src/citra_qt/debugger/registers.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/citra_qt/debugger/registers.cpp b/src/citra_qt/debugger/registers.cpp new file mode 100644 index 000000000..96ceed480 --- /dev/null +++ b/src/citra_qt/debugger/registers.cpp | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | #include "registers.hxx" | ||
| 2 | |||
| 3 | #include "core/core.h" | ||
| 4 | #include "core/arm/arm_interface.h" | ||
| 5 | |||
| 6 | RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent) | ||
| 7 | { | ||
| 8 | cpu_regs_ui.setupUi(this); | ||
| 9 | |||
| 10 | tree = cpu_regs_ui.treeWidget; | ||
| 11 | tree->addTopLevelItem(registers = new QTreeWidgetItem(QStringList("Registers"))); | ||
| 12 | tree->addTopLevelItem(CSPR = new QTreeWidgetItem(QStringList("CSPR"))); | ||
| 13 | |||
| 14 | registers->setExpanded(true); | ||
| 15 | CSPR->setExpanded(true); | ||
| 16 | |||
| 17 | for (int i = 0; i < 16; ++i) | ||
| 18 | { | ||
| 19 | QTreeWidgetItem* child = new QTreeWidgetItem(QStringList(QString("R[%1]").arg(i, 2, 10, QLatin1Char('0')))); | ||
| 20 | registers->addChild(child); | ||
| 21 | } | ||
| 22 | |||
| 23 | CSPR->addChild(new QTreeWidgetItem(QStringList("M"))); | ||
| 24 | CSPR->addChild(new QTreeWidgetItem(QStringList("T"))); | ||
| 25 | CSPR->addChild(new QTreeWidgetItem(QStringList("F"))); | ||
| 26 | CSPR->addChild(new QTreeWidgetItem(QStringList("I"))); | ||
| 27 | CSPR->addChild(new QTreeWidgetItem(QStringList("A"))); | ||
| 28 | CSPR->addChild(new QTreeWidgetItem(QStringList("E"))); | ||
| 29 | CSPR->addChild(new QTreeWidgetItem(QStringList("IT"))); | ||
| 30 | CSPR->addChild(new QTreeWidgetItem(QStringList("GE"))); | ||
| 31 | CSPR->addChild(new QTreeWidgetItem(QStringList("DNM"))); | ||
| 32 | CSPR->addChild(new QTreeWidgetItem(QStringList("J"))); | ||
| 33 | CSPR->addChild(new QTreeWidgetItem(QStringList("Q"))); | ||
| 34 | CSPR->addChild(new QTreeWidgetItem(QStringList("V"))); | ||
| 35 | CSPR->addChild(new QTreeWidgetItem(QStringList("C"))); | ||
| 36 | CSPR->addChild(new QTreeWidgetItem(QStringList("Z"))); | ||
| 37 | CSPR->addChild(new QTreeWidgetItem(QStringList("N"))); | ||
| 38 | } | ||
| 39 | |||
| 40 | void RegistersWidget::OnCPUStepped() | ||
| 41 | { | ||
| 42 | ARM_Interface* app_core = Core::g_app_core; | ||
| 43 | |||
| 44 | for (int i = 0; i < 16; ++i) | ||
| 45 | registers->child(i)->setText(1, QString("0x%1").arg(app_core->GetReg(i), 8, 16, QLatin1Char('0'))); | ||
| 46 | |||
| 47 | CSPR->setText(1, QString("0x%1").arg(app_core->GetCPSR(), 8, 16, QLatin1Char('0'))); | ||
| 48 | CSPR->child(0)->setText(1, QString("b%1").arg(app_core->GetCPSR() & 0x1F, 5, 2, QLatin1Char('0'))); // M - Mode | ||
| 49 | CSPR->child(1)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 5) & 0x1)); // T - State | ||
| 50 | CSPR->child(2)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 6) & 0x1)); // F - FIQ disable | ||
| 51 | CSPR->child(3)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 7) & 0x1)); // I - IRQ disable | ||
| 52 | CSPR->child(4)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 8) & 0x1)); // A - Imprecise abort | ||
| 53 | CSPR->child(5)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 9) & 0x1)); // E - Data endianess | ||
| 54 | CSPR->child(6)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 10) & 0x3F)); // IT - If-Then state (DNM) | ||
| 55 | CSPR->child(7)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 16) & 0xF)); // GE - Greater-than-or-Equal | ||
| 56 | CSPR->child(8)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 20) & 0xF)); // DNM - Do not modify | ||
| 57 | CSPR->child(9)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 24) & 0x1)); // J - Java state | ||
| 58 | CSPR->child(10)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 27) & 0x1)); // Q - Sticky overflow | ||
| 59 | CSPR->child(11)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 28) & 0x1)); // V - Overflow | ||
| 60 | CSPR->child(12)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 29) & 0x1)); // C - Carry/Borrow/Extend | ||
| 61 | CSPR->child(13)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 30) & 0x1)); // Z - Zero | ||
| 62 | CSPR->child(14)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 31) & 0x1)); // N - Negative/Less than | ||
| 63 | } | ||