38constexpr uint32_t
iclass(uint32_t v) {
return v << 26; }
45constexpr uint32_t
add(
Reg dst,
Reg tgt) {
return add(dst, dst, tgt); }
68constexpr uint32_t
nor(
Reg dst,
Reg tgt) {
return nor(dst, dst, tgt); }
70constexpr uint32_t
orr(
Reg dst,
Reg tgt) {
return orr(dst, dst, tgt); }
76constexpr uint32_t
slt(
Reg dst,
Reg tgt) {
return slt(dst, dst, tgt); }
90constexpr uint32_t
sub(
Reg dst,
Reg tgt) {
return sub(dst, dst, tgt); }
102constexpr uint32_t
sll(
Reg dst, uint16_t sa) {
return sll(dst, dst, sa); }
106constexpr uint32_t
sra(
Reg dst, uint16_t sa) {
return sra(dst, dst, sa); }
110constexpr uint32_t
srl(
Reg dst, uint16_t sa) {
return srl(dst, dst, sa); }
126 uint32_t o = offset >> 2;
131 uint32_t o = offset >> 2;
136 uint32_t o = offset >> 2;
141 uint32_t o = offset >> 2;
146 uint32_t o = offset >> 2;
151 uint32_t o = offset >> 2;
156 uint32_t o = offset >> 2;
161 uint32_t o = offset >> 2;
165constexpr uint32_t
brk(uint32_t code) {
return (code << 6) | 0b001101; }
166constexpr uint32_t
j(uint32_t addr) {
return iclass(0b000010) | ((addr >> 2) & 0x03ffffff); }
167constexpr uint32_t
jal(uint32_t addr) {
return iclass(0b000011) | ((addr >> 2) & 0x03ffffff); }
170constexpr uint32_t
syscall() {
return 0b001100; }
236constexpr uint32_t
mtc0(
Reg tgt, uint8_t dst) {
return iclass(0b010000) | (4 << 21) |
tgtVal(tgt) | (dst << 11); }
237constexpr uint32_t
rfe() {
return 0x42000010; }
240constexpr uint32_t
nop() {
return 0; }
247constexpr uint32_t
neg(
Reg tgt) {
return neg(tgt, tgt); }
uint32_t r
Definition cpu.c:310
uint8_t b
Definition gte-depthcue.c:41
constexpr uint32_t jr(Reg src)
Definition encoder.hh:169
constexpr uint32_t j(uint32_t addr)
Definition encoder.hh:166
constexpr uint32_t brk(uint32_t code)
Definition encoder.hh:165
constexpr uint32_t tgtVal(Reg r)
Definition encoder.hh:40
constexpr uint32_t mflo(Reg dst)
Definition encoder.hh:118
constexpr uint32_t srlv(Reg dst, Reg tgt, Reg src)
Definition encoder.hh:111
constexpr uint32_t mult(Reg src, Reg tgt)
Definition encoder.hh:121
constexpr uint32_t swr(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:228
constexpr uint32_t neg(Reg tgt, Reg src)
Definition encoder.hh:246
constexpr uint32_t slti(Reg tgt, Reg src, int16_t value)
Definition encoder.hh:79
constexpr uint32_t multu(Reg src, Reg tgt)
Definition encoder.hh:122
constexpr uint32_t addi(Reg tgt, Reg src, int16_t value)
Definition encoder.hh:48
constexpr uint32_t mfhi(Reg dst)
Definition encoder.hh:117
constexpr uint32_t lbu(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:178
constexpr uint32_t rfe()
Definition encoder.hh:237
constexpr uint32_t li(Reg tgt, int16_t value)
Definition encoder.hh:241
constexpr uint32_t lw(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:193
constexpr uint32_t sb(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:208
constexpr uint32_t bgtz(Reg src, int16_t offset)
Definition encoder.hh:140
constexpr uint32_t div(Reg src, Reg tgt)
Definition encoder.hh:115
constexpr uint32_t sll(Reg dst, Reg tgt, uint16_t sa)
Definition encoder.hh:101
constexpr uint32_t lui(Reg tgt, uint16_t value)
Definition encoder.hh:66
constexpr uint32_t addu(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:46
constexpr uint32_t srcVal(Reg r)
Definition encoder.hh:41
constexpr uint32_t bltzal(Reg src, int16_t offset)
Definition encoder.hh:155
constexpr uint32_t andi(Reg tgt, Reg src, uint16_t value)
Definition encoder.hh:62
constexpr uint32_t jalr(Reg src, Reg dst=Reg::RA)
Definition encoder.hh:168
constexpr uint32_t jal(uint32_t addr)
Definition encoder.hh:167
constexpr uint32_t mtc0(Reg tgt, uint8_t dst)
Definition encoder.hh:236
Mips::Reg Reg
Definition encoder.hh:36
constexpr uint32_t mthi(Reg dst)
Definition encoder.hh:119
constexpr uint32_t beq(Reg src, Reg tgt, int16_t offset)
Definition encoder.hh:125
constexpr uint32_t lhu(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:188
constexpr uint32_t lwl(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:198
constexpr uint32_t bltz(Reg src, int16_t offset)
Definition encoder.hh:150
constexpr uint32_t subu(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:91
constexpr uint32_t andd(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:60
constexpr uint32_t mfc0(Reg tgt, uint8_t dst)
Definition encoder.hh:235
constexpr uint32_t sub(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:89
constexpr uint32_t mtlo(Reg dst)
Definition encoder.hh:120
constexpr uint32_t sltiu(Reg tgt, Reg src, uint16_t value)
Definition encoder.hh:85
constexpr uint32_t swl(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:223
constexpr uint32_t srl(Reg dst, Reg tgt, uint16_t sa)
Definition encoder.hh:109
constexpr uint32_t sllv(Reg dst, Reg tgt, Reg src)
Definition encoder.hh:103
constexpr uint32_t bne(Reg src, Reg tgt, int16_t offset)
Definition encoder.hh:160
constexpr uint32_t move(Reg tgt, Reg src)
Definition encoder.hh:243
constexpr uint32_t xori(Reg tgt, Reg src, uint16_t value)
Definition encoder.hh:95
constexpr uint32_t nor(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:67
constexpr uint32_t divu(Reg src, Reg tgt)
Definition encoder.hh:116
constexpr uint32_t beqz(Reg tgt, int16_t offset)
Definition encoder.hh:249
constexpr uint32_t syscall()
Definition encoder.hh:170
constexpr uint32_t nop()
Definition encoder.hh:240
constexpr uint32_t bgezal(Reg src, int16_t offset)
Definition encoder.hh:135
constexpr uint32_t add(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:44
constexpr uint32_t sra(Reg dst, Reg tgt, uint16_t sa)
Definition encoder.hh:105
constexpr uint32_t xorr(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:93
constexpr uint32_t lh(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:183
constexpr uint32_t sltu(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:77
constexpr uint32_t addiu(Reg tgt, Reg src, int16_t value)
Definition encoder.hh:54
constexpr uint32_t lb(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:173
constexpr uint32_t blez(Reg src, int16_t offset)
Definition encoder.hh:145
constexpr uint32_t srav(Reg dst, Reg tgt, Reg src)
Definition encoder.hh:107
constexpr uint32_t ori(Reg tgt, Reg src, uint16_t value)
Definition encoder.hh:71
constexpr uint32_t nott(Reg tgt, Reg src)
Definition encoder.hh:244
constexpr uint32_t lwr(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:203
constexpr uint32_t sh(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:213
constexpr uint32_t bal(int16_t offset)
Definition encoder.hh:251
constexpr uint32_t orr(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:69
constexpr uint32_t bnez(Reg tgt, int16_t offset)
Definition encoder.hh:250
constexpr uint32_t iclass(uint32_t v)
Definition encoder.hh:38
constexpr uint32_t bgez(Reg src, int16_t offset)
Definition encoder.hh:130
constexpr uint32_t sw(Reg tgt, int16_t offset, Reg src)
Definition encoder.hh:218
constexpr uint32_t slt(Reg dst, Reg src, Reg tgt)
Definition encoder.hh:75
constexpr uint32_t liu(Reg tgt, uint16_t value)
Definition encoder.hh:242
constexpr uint32_t dstVal(Reg r)
Definition encoder.hh:39
static int value
Definition syscalls.h:553
static const char * src
Definition syscalls.h:132