summaryrefslogtreecommitdiff
path: root/inc/instrDTO.h
diff options
context:
space:
mode:
authorSiddarth Suresh <155843085+SiddarthSuresh98@users.noreply.github.com>2025-04-27 09:12:50 -0400
committerGitHub <noreply@github.com>2025-04-27 09:12:50 -0400
commit5653b2a033e7a4173d2f178b5ce52384666d3d7b (patch)
tree5c8fc7282ad1ce0c215786a70b35296645df2a1b /inc/instrDTO.h
parent3d0133c2f793e82d7519d8e2c5023114cd0f0eab (diff)
parenta4dd1f00a5d0108058fb3bfbd5f399a507792859 (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.h133
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 */