diff options
| author | Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> | 2025-04-26 23:57:02 -0400 | 
|---|---|---|
| committer | Siddarth-Suresh <65844402+Siddarth-Suresh@users.noreply.github.com> | 2025-04-26 23:57:02 -0400 | 
| commit | bd4714ae53898337a02cfcec17628eeff9d77a9c (patch) | |
| tree | 04e01e43dab9768c78134190b99a3c9fc4f837cf /inc | |
| parent | 41f612789f652654b5f2fa8c3fee4e348e2081b1 (diff) | |
Fix for load and store vector
Diffstat (limited to 'inc')
| -rw-r--r-- | inc/ex.h | 5 | ||||
| -rw-r--r-- | inc/instrDTO.h | 6 | ||||
| -rw-r--r-- | inc/stage.h | 20 | 
3 files changed, 5 insertions, 26 deletions
@@ -76,11 +76,6 @@ class EX : public Stage  	 * @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. -	 */  };  #endif /* EX_H_INCLUDED */ diff --git a/inc/instrDTO.h b/inc/instrDTO.h index 8f8e28e..b99ba20 100644 --- a/inc/instrDTO.h +++ b/inc/instrDTO.h @@ -43,10 +43,14 @@ struct InstrDTO {  	 */  	signed int slot_A;  	/** -	 * Optional slot for holding PC +	 * Optional slot for holding PC / base address  	 */  	signed int slot_B;  	/** +	 * Optional slot to hold immediates +	 */ +	signed int slot_C; +	/**  	 * The mnemonic of the instruction.  	 */  	Mnemonic mnemonic; diff --git a/inc/stage.h b/inc/stage.h index ae01723..dde103b 100644 --- a/inc/stage.h +++ b/inc/stage.h @@ -110,16 +110,6 @@ class Stage  	template <typename T>  	void store_register(signed int v, T d)  	{ -		// if (v < 0 || v >= GPR_NUM + V_NUM) { -		// 	throw std::out_of_range( -		// 		"instruction tried to access register which does not exist"); -		// } - -		// if (v >= GPR_NUM) -		// 	this->vrs[v % GPR_NUM] = d; -		// else -		// 	this->gprs[v] = d; -  		if constexpr (std::is_same_v<T, signed int>) {  			if (v < 0 || v >= GPR_NUM) {  				throw std::out_of_range("Invalid GPR index for storing scalar"); @@ -141,16 +131,6 @@ class Stage  	template <typename T>  	T dereference_register(signed int v)  	{ -		// signed int r; - -		// if (v < 0 || v >= GPR_NUM + V_NUM) { -		// 	throw std::out_of_range( -		// 		"instruction tried to access register which does not exist"); -		// } - -		// r = (v >= GPR_NUM) ? this->vrs[v % GPR_NUM] : this->gprs[v]; -		// return r; -  		if constexpr (std::is_same_v<T, signed int>) {  			if (v < 0 || v >= GPR_NUM) {  				throw std::out_of_range("Invalid GPR index");  | 
