-
Notifications
You must be signed in to change notification settings - Fork 0
/
ula.h
94 lines (86 loc) · 2.21 KB
/
ula.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/* Header da ULA */
/* Autor Bruno Cesar, bcesar.g6@gmail.com */
#ifndef __ULA_H
#define __ULA_H
#include <stdarg.h>
#include "processador.h"
#include "simulador.h"
#include "utils.h"
#include "cache.h"
#include "registradores.h"
#include "clock.h"
#include "pcComponent.h"
#define FLAG_FAIL 0
#define FLAG_SUCCESS 1
#define FLAG_NO_RETURN 2
#define FLAG_MTHI 4
#define FLAG_MTLO 8
#define FLAG_MUL_OP 16
typedef struct{
unsigned int resultado;
int flag;
} ulaRet;
ulaRet sll(int num, ...);
ulaRet srl(int num, ...);
ulaRet sra(int num, ...);
ulaRet sllv(int num, ...);
ulaRet srlv(int num, ...);
ulaRet srav(int num, ...);
ulaRet movz(int num, ...);
ulaRet movn(int num, ...);
ulaRet mfhi(int num, ...);
ulaRet mthi(int num, ...);
ulaRet mflo(int num, ...);
ulaRet mtlo(int num, ...);
ulaRet mult(int num, ...);
ulaRet multu(int num, ...);
ulaRet div_(int num, ...);
ulaRet divu(int num, ...);
ulaRet add(int num, ...);
ulaRet addu(int num, ...);
ulaRet sub(int num, ...);
ulaRet subu(int num, ...);
ulaRet and(int num, ...);
ulaRet or(int num, ...);
ulaRet xor(int num, ...);
ulaRet nor(int num, ...);
ulaRet slt(int num, ...);
ulaRet sltu(int num, ...);
ulaRet jr(int num, ...);
ulaRet jalr(int num, ...);
ulaRet bltz(int num, ...);
ulaRet bgez(int num, ...);
ulaRet bltzal(int num, ...);
ulaRet bgezal(int num, ...);
ulaRet beq(int num, ...);
ulaRet bne(int num, ...);
ulaRet blez(int num, ...);
ulaRet bgtz(int num, ...);
ulaRet addi(int num, ...);
ulaRet addiu(int num, ...);
ulaRet slti(int num, ...);
ulaRet sltiu(int num, ...);
ulaRet andi(int num, ...);
ulaRet ori(int num, ...);
ulaRet xori(int num, ...);
ulaRet lui(int num, ...);
ulaRet madd(int num, ...);
ulaRet maddu(int num, ...);
ulaRet mul(int num, ...);
ulaRet msub(int num, ...);
ulaRet msubu(int num, ...);
ulaRet clo(int num, ...);
ulaRet clz(int num, ...);
ulaRet lb(int num, ...);
ulaRet lh(int num, ...);
ulaRet lw(int num, ...);
ulaRet lbu(int num, ...);
ulaRet lhu(int num, ...);
ulaRet sb(int num, ...);
ulaRet sh(int num, ...);
ulaRet sw(int num, ...);
ulaRet sysc(int num, ...);
ulaRet nop(int num, ...);
ulaRet (*p[61]) (int num, ...); //Vetor de ponteiros para funções
void ulaInit();
#endif /* __ULA_H */