summaryrefslogtreecommitdiff
path: root/inc/ex.h
diff options
context:
space:
mode:
authorSiddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com>2025-03-30 19:34:17 -0400
committerGitHub <noreply@github.com>2025-03-30 19:34:17 -0400
commit12a9e93f913c0057f2ef32f5894931c8b4bd3a85 (patch)
tree88669ed2be55b4f455ef4ac56263a01dd5f70a40 /inc/ex.h
parenteedf9686eb60f2008e7766cc9a5d3e037b9dae64 (diff)
parent36dabe6183af98b2e3f6d0316436dc3affc3d986 (diff)
Merge pull request #41 from bdunahu/bdunahu
Add mock stage, proper decode tests changes look good
Diffstat (limited to 'inc/ex.h')
-rw-r--r--inc/ex.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/inc/ex.h b/inc/ex.h
index 2ca8876..cc8062b 100644
--- a/inc/ex.h
+++ b/inc/ex.h
@@ -3,6 +3,7 @@
#include "instrDTO.h"
#include "response.h"
#include "stage.h"
+#include <unordered_map>
class EX : public Stage
{
@@ -13,8 +14,19 @@ class EX : public Stage
* @return A newly allocated EX object.
*/
EX(Stage *next);
+ using Stage::advance;
- InstrDTO *advance(Response p) override;
+ private:
+ void advance_helper();
+ /**
+ * Maps each mnemonic to a function which carries out the instruction's base
+ * logic.
+ * All instructions store the result into s1.
+ */
+ std::unordered_map<
+ Mnemonic,
+ std::function<void(signed int &s1, signed int s2)>>
+ instr_map;
};
#endif /* EX_H_INCLUDED */