summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com>2025-03-26 22:05:46 -0400
committerGitHub <noreply@github.com>2025-03-26 22:05:46 -0400
commit495a8af3a90257e491c063730bccf86e34e153fa (patch)
treebf2ff9e8033a89814f675d13ba6ce40281484491
parent9476d1355493cdab93064ec123ac13bfb78e8ed3 (diff)
parentb417eefe0b451ac01cef794f97e548f987bf173d (diff)
Merge pull request #36 from bdunahu/bdunahu
Add fetch stage implementation, tests, program loading, DTO object Base classes plus base tests for Instruction Fetch stage with a default program
-rw-r--r--inc/dram.h5
-rw-r--r--src/storage/dram.cc10
2 files changed, 15 insertions, 0 deletions
diff --git a/inc/dram.h b/inc/dram.h
index 0799015..102ec0f 100644
--- a/inc/dram.h
+++ b/inc/dram.h
@@ -29,6 +29,11 @@ class Dram : public Storage
Response
read_word(Accessor accessor, int address, signed int &data) override;
+ /**
+ * TODO This will accept a file at a later date.
+ */
+ void load(std::vector<signed int> program);
+
private:
/**
* Helper for all access methods.
diff --git a/src/storage/dram.cc b/src/storage/dram.cc
index 371503d..f90f8db 100644
--- a/src/storage/dram.cc
+++ b/src/storage/dram.cc
@@ -56,6 +56,16 @@ Response Dram::read_word(Accessor accessor, int address, signed int &data)
});
}
+// TODO load a file instead and test this method
+void Dram::load(std::vector<signed int> program) {
+ unsigned long i;
+ for (i = 0; i < program.size(); ++i) {
+ int line, word;
+ get_memory_index(i, line, word);
+ this->data->at(line).at(word) = program[i];
+ }
+}
+
Response Dram::process(
Accessor accessor,
int address,