diff options
| author | Siddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com> | 2025-03-30 21:30:17 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-30 21:30:17 -0400 | 
| commit | 52e1ca72925444b8e5a9bb5b240a4063a4d7b958 (patch) | |
| tree | bfd8e383eedbd40f5c9067e04734f62ed6ccab23 /inc | |
| parent | 12a9e93f913c0057f2ef32f5894931c8b4bd3a85 (diff) | |
| parent | 6a15f66bef28de9e1b982c3adda4d9b75c818852 (diff) | |
Merge pull request #42 from bdunahu/bdunahu
Add tests for EX, rest of (non-vector) instructions
Diffstat (limited to 'inc')
| -rw-r--r-- | inc/ex.h | 2 | ||||
| -rw-r--r-- | inc/id.h | 32 | ||||
| -rw-r--r-- | inc/stage.h | 20 | 
3 files changed, 32 insertions, 22 deletions
@@ -25,7 +25,7 @@ class EX : public Stage  	 */  	std::unordered_map<  		Mnemonic, -		std::function<void(signed int &s1, signed int s2)>> +		std::function<void(signed int &s1, signed int s2, signed int s3)>>  		instr_map;  }; @@ -21,22 +21,6 @@ class ID : public Stage  	 */  	/** -	 * Parse an instruction into a type, opcode, and fields. If the type is -	 * invalid, only the type field will be set. -	 * -	 * This method is marked public so it may be tested, and is not used outside -	 * of this class during normal execution. -	 * -	 * @param the resulting first field, which varies per type. To call this -	 * function properly, this field must contain the full instruction bytes on -	 * function entry. -	 * @param the resulting second field, which varies per type. -	 * @param the resulting third field, which varies per type. -	 * @param the resulting mnemonic. -	 */ -	void get_instr_fields( -		signed int &s1, signed int &s2, signed int &s3, Mnemonic &m); -	/**  	 * Facilitates register checkout and data hazard management.  	 * It does this by checking that the register passed in is not currently  	 * checked out. If true, then replaces r with the value of the register and @@ -66,6 +50,22 @@ class ID : public Stage  	 * @param the resulting second field.  	 * @param the resulting third field.  	 */ +	/** +	 * Parse an instruction into a type, opcode, and fields. If the type is +	 * invalid, only the type field will be set. +	 * +	 * This method is marked public so it may be tested, and is not used outside +	 * of this class during normal execution. +	 * +	 * @param the resulting first field, which varies per type. To call this +	 * function properly, this field must contain the full instruction bytes on +	 * function entry. +	 * @param the resulting second field, which varies per type. +	 * @param the resulting third field, which varies per type. +	 * @param the resulting mnemonic. +	 */ +	void get_instr_fields( +		signed int &s1, signed int &s2, signed int &s3, Mnemonic &m);  	void decode_R_type(signed int &s1, signed int &s2, signed int &s3);  	void decode_I_type(signed int &s1, signed int &s2, signed int &s3);  	void decode_J_type(signed int &s1, signed int &s2); diff --git a/inc/stage.h b/inc/stage.h index 56a3589..84d2a7b 100644 --- a/inc/stage.h +++ b/inc/stage.h @@ -40,6 +40,21 @@ class Stage  	 */  	virtual InstrDTO *advance(Response p); +	/* The following methods are made public so that they may be tested, and are +	 * not to be called from outside classes during standard execution. +	 */ + +	/** +	 * Gets the bit in the condition code register correspondng to `c`. +	 * @param the condition code to retrieve, +	 */ +	bool get_condition(CC c); + +	/** +	 * Sets the value of the PC register. +	 */ +	void set_pc(unsigned int pc); +    protected:  	/**  	 * The function expected to do the majority of the work. @@ -54,11 +69,6 @@ class Stage  	 */  	void set_condition(CC c, bool v);  	/** -	 * Gets the bit in the condition code register correspondng to `c`. -	 * @param the condition code to retrieve, -	 */ -	bool get_condition(CC c); -	/**  	 * Helper for `check_out`.  	 * Returns true if r are not checked out, false otherwise.  	 * @param a list of register numbers.  | 
