blob: 27c6402b9b96553ea942da74ebcdefde78508380 (
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
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
|
#include "loadstore.h"
InstructionLoad::InstructionLoad(enum InstructionLoadStoreT type, std::uint8_t rs, std::uint8_t rt, std::uint16_t offset)
: InstructionI(rs, rt, offset) {
this->type = type;
}
QVector<QString> InstructionLoad::to_strs() {
QVector<QString> str = this->InstructionI::to_strs();
switch (this->type) {
case ILST_B:
str[0] = "lb";
break;
case ILST_HW:
str[0] = "lh";
break;
case ILST_WL:
str[0] = "lwl";
break;
case ILST_W:
str[0] = "lw";
break;
case ILST_BU:
str[0] = "lbu";
break;
case ILST_HU:
str[0] = "lhu";
break;
case ILST_WR:
str[0] = "lwr";
break;
default:
// TODO different exception
throw std::exception();
}
return str;
}
InstructionStore::InstructionStore(enum InstructionLoadStoreT type, std::uint8_t rs, std::uint8_t rt, std::uint16_t offset)
: InstructionI(rs, rt, offset) {
this->type = type;
}
QVector<QString> InstructionStore::to_strs() {
QVector<QString> str = this->InstructionI::to_strs();
switch (this->type) {
case ILST_B:
str[0] = "sb";
break;
case ILST_HW:
str[0] = "sh";
break;
case ILST_WL:
str[0] = "swl";
break;
case ILST_W:
str[0] = "sw";
break;
case ILST_WR:
str[0] = "swr";
break;
default:
// TODO different exception
throw std::exception();
}
return str;
}
|