diff options
author | Siddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com> | 2025-04-27 09:12:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-27 09:12:50 -0400 |
commit | 5653b2a033e7a4173d2f178b5ce52384666d3d7b (patch) | |
tree | 5c8fc7282ad1ce0c215786a70b35296645df2a1b /inc/instrDTO.h | |
parent | 3d0133c2f793e82d7519d8e2c5023114cd0f0eab (diff) | |
parent | a4dd1f00a5d0108058fb3bfbd5f399a507792859 (diff) |
Merge pull request #68 from bdunahu/bdunahu
[WIP] Pipeline cleanup and revisited GUI storage display
Diffstat (limited to 'inc/instrDTO.h')
-rw-r--r-- | inc/instrDTO.h | 133 |
1 files changed, 21 insertions, 112 deletions
diff --git a/inc/instrDTO.h b/inc/instrDTO.h index d4af389..1402526 100644 --- a/inc/instrDTO.h +++ b/inc/instrDTO.h @@ -17,133 +17,42 @@ #ifndef INSTRDTO_H #define INSTRDTO_H -#include "accessor.h" #include "instr.h" -#include <functional> -#include <string> -#include <unordered_map> -class InstrDTO -{ - public: - /** - * Constructor. - */ - InstrDTO(); - ~InstrDTO() = default; - - int get_id_cycle(); - /** - * @return instr_bits - */ - signed int get_instr_bits(); - /** - * @return checked_out - */ - signed int get_checked_out(); - /** - * @return s1 - */ - signed int get_s1(); - /** - * @return s2 - */ - signed int get_s2(); - /** - * @return s3 - */ - signed int get_s3(); - /** - * @return the mnemonic of the instruction - */ - Mnemonic get_mnemonic(); - /** - * @return the type of the instruction - */ - Type get_type(); - /** - * @return the program counter at the time this instruction was fetched - */ - unsigned int get_pc(); - /** - * @return 1 if this instruction is invalid, 0 otherwise - */ - int is_squashed(); - - /** - * @param instr_bits - */ - void set_instr_bits(signed int); - /** - * @param checked_out - */ - void set_checked_out(signed int); - /** - * @param s1 - */ - void set_s1(signed int); - /** - * @param s2 - */ - void set_s2(signed int); - /** - * @param s3 - */ - void set_s3(signed int); - /** - * @param the mnemonic of the instruction - */ - void set_mnemonic(Mnemonic); +struct U_INT_TYPE { + signed int slot_one; + signed int slot_two; + signed int slot_three; +}; - /** - * @param the type of the instruction - */ - void set_type(Type); - /** - * @param the program counter at the time this instruction was fetched - */ - void set_pc(unsigned int pc); - /** - * squashes this instruction - */ - void squash(); +struct V_TYPE { +}; - private: +struct InstrDTO { /** - * The raw bits encoding the instruction. + * If this instruction is squashed or not. */ - signed int instr_bits; + unsigned int is_squashed : 1; /** - * The register, if any, this instruction has checked out. A checked out - * register cannot be checked out by another register. This prevents RAW - * conflicts. + * Optional slot for holding the Instruction Bits */ - signed int checked_out; + signed int slot_A; /** - * Slots in this instruction, for storing temporary registers, immediates, - * or other. - * Some instruction types may use these differently. - * The `oper` function is in charge of knowing how to parse these. + * Optional slot for holding PC */ - signed int s1; - signed int s2; - signed int s3; + signed int slot_B; /** - * The mnemonic of the operation. + * The mnemonic of the instruction. */ Mnemonic mnemonic; /** - * Type of the instruction - */ - Type type; - /** - * The PC of the instruction + * The register this instruction checks out. */ - unsigned int pc; - /** - * If this instruction was made dead - */ - unsigned int squashed; + signed int checked_out; + union { + struct U_INT_TYPE integer; + struct V_TYPE vector; + } operands; }; #endif /* INSTRDTO_H_INCLUDED */ |