open-story-teller/story-editor/src/vm_dock.cpp
2023-04-28 17:28:24 +02:00

44 lines
1.2 KiB
C++

#include "vm_dock.h"
VmDock::VmDock(Chip32::Assembler &assembler)
: DockWidgetBase(tr("Virtual Machine"))
{
setObjectName("VirtualMachineDock"); // used to save the state
m_uiVM.setupUi(this);
// Add registers
m_uiVM.regsTable->setRowCount(REGISTER_COUNT);
for (int i = 0; i < REGISTER_COUNT; i++)
{
std::string regName;
assembler.GetRegisterName(i, regName);
QTableWidgetItem *regNameItem = new QTableWidgetItem(regName.c_str());
QTableWidgetItem *regValueItem = new QTableWidgetItem(QString::number(0));
m_uiVM.regsTable->setItem(i, 0, regNameItem);
m_uiVM.regsTable->setItem(i, 1, regValueItem);
}
connect(m_uiVM.generateButton, &QPushButton::clicked, [=](bool checked) {
emit sigCompile();
});
connect(m_uiVM.playButton, &QPushButton::clicked, [=](bool checked) {
emit sigStepInstruction();
});
connect(m_uiVM.buildButton, &QPushButton::clicked, [=](bool checked) {
emit sigBuild();
});
}
void VmDock::updateRegistersView(const chip32_ctx_t &ctx)
{
for (int i = 0; i < REGISTER_COUNT; i++)
{
m_uiVM.regsTable->item(i, 1)->setText(QString::number(ctx.registers[i]));
}
}