-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstruction_set.h
69 lines (58 loc) · 1.03 KB
/
instruction_set.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef INSTRUCTION_SET_H_INCLUDED
#define INSTRUCTION_SET_H_INCLUDED
typedef enum{
ADDD,
SUBD,
MULTD,
DIVD,
ADDI,
BEQZ,
SGTI,
SD,
LD
} cmdEnum;
enum cmdtype {
RTYPE,
ITYPE,
BTYPE, // NOTE: BTYPE is actually an ITYPE command (that does branching)
JTYPE, // no really needed, since our MIPS-like instrucion set lacks jump (J and JAL)
BREAKPOINT
};
typedef struct {
cmdEnum cmd;
int dstReg;
int src1Reg;
int src2Reg;
} Rinstr;
typedef struct {
cmdEnum cmd;
int dstReg;
int srcReg;
int immediate;
} Iinstr;
typedef struct {
cmdEnum cmd;
int dstReg;
//int srcReg;
union {
uint64_t label;
void * branchp; //TODO Change to something better
} br;
} Binstr;
typedef struct {
cmdEnum cmd;
int dstReg;
int address;
} Jinstr;
typedef struct {
enum cmdtype type;
bool isBreakpoint;
union{
Rinstr r;
Iinstr i;
Binstr b;
Jinstr j;
} instr;
} ASMinstr;
char * getCmdStr(cmdEnum );
#endif // INSTRUCTION_SET_H_INCLUDED