diff options
author | bd <bdunaisky@umass.edu> | 2025-04-18 00:58:40 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-18 00:58:40 +0000 |
commit | 480181957b3f3dbcf7731023504c2cacc8d181ea (patch) | |
tree | e936781b52c6846d87c98381ed47bc7da7c43bff /inc/ex.h | |
parent | 62b9e280d5d0222710e491dcd28fe26bea915dcd (diff) | |
parent | 984ce6eef2e439955ff991f90c2b654be7c6c3f3 (diff) |
Merge pull request #54 from bdunahu/bdunahu
The pipeline says some things and there are numbers
Diffstat (limited to 'inc/ex.h')
-rw-r--r-- | inc/ex.h | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -3,8 +3,16 @@ #include "instrDTO.h" #include "response.h" #include "stage.h" +#include <exception> #include <unordered_map> +class HaltException : public std::exception +{ + const char *what() const noexcept override { + return ""; + } +}; + class EX : public Stage { public: @@ -19,13 +27,22 @@ class EX : public Stage private: void advance_helper(); /** + * Wrapper for division functions, which detects HALT instructinos (division + * by 0). + * @param the numerator + * @param the denominator + * @param if the modulo operator should instead be used + */ + void handle_divide(signed int &s1, signed int s2, bool is_mod); + /** * 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, signed int s3, unsigned int pc)>> + std::function<void( + signed int &s1, signed int s2, signed int s3, unsigned int pc)>> instr_map; }; |