From b81c86b438123457be86af2e7c24375856afa742 Mon Sep 17 00:00:00 2001 From: bd Date: Wed, 26 Mar 2025 12:21:52 -0400 Subject: Add fetch stage implementation, tests, program loading, DTO object --- src/sim/controller.cc | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) (limited to 'src/sim/controller.cc') diff --git a/src/sim/controller.cc b/src/sim/controller.cc index 93fd0e0..2813905 100644 --- a/src/sim/controller.cc +++ b/src/sim/controller.cc @@ -1,34 +1,23 @@ #include "controller.h" -#include "ex.h" -#include "id.h" -#include "if.h" -#include "mm.h" #include "response.h" #include "storage.h" -#include "wb.h" -Controller::Controller(Storage *storage, bool is_pipelined) - : Stage(nullptr) +Controller::Controller(Stage *stage, Storage *storage, bool is_pipelined) + : Stage(stage) { this->clock_cycle = 0; this->storage = storage; this->is_pipelined = is_pipelined; this->pc = 0x0; this->gprs = {0}; - - IF *f = new IF(nullptr); - ID *d = new ID(f); - EX *e = new EX(d); - MM *m = new MM(e); - WB *w = new WB(m); - this->next = w; } void Controller::run_for(int number) { + InstrDTO instr; int i; for (i = 0; i < number; ++i) { - this->advance(); + this->advance(instr); } } @@ -38,9 +27,11 @@ std::array Controller::get_gprs() { return this->gprs; } int Controller::get_pc() { return this->pc; } -Response Controller::advance() +Response Controller::advance(InstrDTO &i) { - this->next->advance(); + Response r; + + r = this->next->advance(i); ++this->clock_cycle; - return OK; + return r; } -- cgit v1.2.3