aboutsummaryrefslogtreecommitdiff
path: root/qtmips_gui
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-07 17:27:22 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-07 17:27:22 +0100
commit60c7bfa8260f9aa68bd7947ecddfe64e030b0c7a (patch)
tree3c5c41ab02dac35a1aafca3d29da3a146a6dfb7e /qtmips_gui
parent556d9b08fee6d54a2b2ec62862a84d97c91b9792 (diff)
downloadqtmips-60c7bfa8260f9aa68bd7947ecddfe64e030b0c7a.tar.gz
qtmips-60c7bfa8260f9aa68bd7947ecddfe64e030b0c7a.tar.bz2
qtmips-60c7bfa8260f9aa68bd7947ecddfe64e030b0c7a.zip
Add address to emitted instruction to allow its use for branch address decoding.
The new Qt5 syntax is used to create connections because old syntax does not work with multiple arguments for some unresolved reason. Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_gui')
-rw-r--r--qtmips_gui/coreview.cpp17
-rw-r--r--qtmips_gui/coreview/instructionview.cpp4
-rw-r--r--qtmips_gui/coreview/instructionview.h2
3 files changed, 12 insertions, 11 deletions
diff --git a/qtmips_gui/coreview.cpp b/qtmips_gui/coreview.cpp
index 5eace7d..b360520 100644
--- a/qtmips_gui/coreview.cpp
+++ b/qtmips_gui/coreview.cpp
@@ -52,7 +52,8 @@
} while(false)
#define NEW_I(VAR, X, Y, SIG) do { \
NEW(InstructionView, VAR, X, Y); \
- connect(machine->core(), SIGNAL(SIG), VAR, SLOT(instruction_update(const machine::Instruction&))); \
+ connect(machine->core(), &machine::Core::SIG, \
+ VAR, &coreview::InstructionView::instruction_update); \
} while(false)
#define NEW_V(X, Y, SIG, ...) do { \
NEW(Value, val, X, Y, __VA_ARGS__); \
@@ -229,10 +230,10 @@ QGraphicsSimpleTextItem *CoreViewScene::new_label(const QString &str, qreal x, q
}
CoreViewSceneSimple::CoreViewSceneSimple(machine::QtMipsMachine *machine) : CoreViewScene(machine) {
- NEW_I(instr_prim, 230, 60, instruction_fetched(const machine::Instruction&));
+ NEW_I(instr_prim, 230, 60, instruction_fetched);
if (machine->config().delay_slot()) {
NEW(Latch, delay_slot_latch, 55, 470, machine, 25);
- NEW_I(instr_delay, 60, 500, instruction_program_counter(const machine::Instruction&));
+ NEW_I(instr_delay, 60, 500, instruction_program_counter);
}
coreview::Connection *con;
@@ -311,11 +312,11 @@ CoreViewScenePipelined::CoreViewScenePipelined(machine::QtMipsMachine *machine)
NEW(Latch, latch_mem_wb, 660, 70, machine, 400);
latch_mem_wb->setTitle("MEM/WB");
- NEW_I(inst_fetch, 79, 2, instruction_fetched(const machine::Instruction&));
- NEW_I(inst_dec, 275, 2, instruction_decoded(const machine::Instruction&));
- NEW_I(inst_exec, 464, 2, instruction_executed(const machine::Instruction&));
- NEW_I(inst_mem, 598, 2, instruction_memory(const machine::Instruction&));
- NEW_I(inst_wrb, 660, 18, instruction_writeback(const machine::Instruction&));
+ NEW_I(inst_fetch, 79, 2, instruction_fetched);
+ NEW_I(inst_dec, 275, 2, instruction_decoded);
+ NEW_I(inst_exec, 464, 2, instruction_executed);
+ NEW_I(inst_mem, 598, 2, instruction_memory);
+ NEW_I(inst_wrb, 660, 18, instruction_writeback);
if (machine->config().hazard_unit() != machine::MachineConfig::HU_NONE) {
NEW(LogicBlock, hazard_unit, SC_WIDTH/2, SC_HEIGHT - 15, "Hazard Unit");
diff --git a/qtmips_gui/coreview/instructionview.cpp b/qtmips_gui/coreview/instructionview.cpp
index 5d131eb..342a1d4 100644
--- a/qtmips_gui/coreview/instructionview.cpp
+++ b/qtmips_gui/coreview/instructionview.cpp
@@ -52,7 +52,7 @@ InstructionView::InstructionView() : QGraphicsObject(nullptr), text(this) {
f.setPointSize(6);
text.setFont(f);
- instruction_update(machine::Instruction()); // Initialize to NOP
+ instruction_update(machine::Instruction(), 0); // Initialize to NOP
}
QRectF InstructionView::boundingRect() const {
@@ -65,7 +65,7 @@ void InstructionView::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
painter->drawRoundRect(-WIDTH/2, 0, WIDTH, HEIGHT, ROUND, ROUND);
}
-void InstructionView::instruction_update(const machine::Instruction &i) {
+void InstructionView::instruction_update(const machine::Instruction &i, std::uint32_t inst_addr) {
QRectF prev_box = boundingRect();
text.setText(i.to_str());
QRectF box = text.boundingRect();
diff --git a/qtmips_gui/coreview/instructionview.h b/qtmips_gui/coreview/instructionview.h
index 57b1fbc..8c63fc1 100644
--- a/qtmips_gui/coreview/instructionview.h
+++ b/qtmips_gui/coreview/instructionview.h
@@ -51,7 +51,7 @@ public:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
public slots:
- void instruction_update(const machine::Instruction &i);
+ void instruction_update(const machine::Instruction &i, std::uint32_t inst_addr);
private:
QGraphicsSimpleTextItem text;