diff options
author | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-02-07 17:27:22 +0100 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-02-07 17:27:22 +0100 |
commit | 60c7bfa8260f9aa68bd7947ecddfe64e030b0c7a (patch) | |
tree | 3c5c41ab02dac35a1aafca3d29da3a146a6dfb7e /qtmips_gui | |
parent | 556d9b08fee6d54a2b2ec62862a84d97c91b9792 (diff) | |
download | qtmips-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.cpp | 17 | ||||
-rw-r--r-- | qtmips_gui/coreview/instructionview.cpp | 4 | ||||
-rw-r--r-- | qtmips_gui/coreview/instructionview.h | 2 |
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; |