blob: 2e10ed66710a207a1eebb6bfd321d79b5d10450b (
plain)
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
|
#ifndef INSTRUCTION_H
#define INSTRUCTION_H
#include <stdint.h>
typedef struct {
unsigned int op: 6;
unsigned int rs: 5;
unsigned int rt: 5;
unsigned int rd: 5;
unsigned int shamt: 5;
unsigned int func: 6;
} rtype_t;
typedef struct {
unsigned int op: 6;
unsigned int rs: 5;
unsigned int rt: 5;
unsigned int imm: 16;
} itype_t;
typedef struct {
unsigned int op: 6;
unsigned int addr: 26;
} jtype_t;
typedef enum { NOP, RTYPE, ITYPE, JTYPE } type_t;
typedef struct {
type_t type;
union {
rtype_t r;
jtype_t j;
itype_t i;
uint32_t value;
};
} inst_t;
void InstFetch(inst_t *inst);
void InstExec(const inst_t inst);
#endif
|