-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMIPS64.txt
68 lines (66 loc) · 3.25 KB
/
MIPS64.txt
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
lb reg,imm(reg) - load byte
lbu reg,imm(reg) - load byte unsigned
sb reg,imm(reg) - store byte
lh reg,imm(reg) - load 16-bit half-word
lhu reg,imm(reg) - load 16-bit half word unsigned
sh reg,imm(reg) - store 16-bit half-word
lw reg,imm(reg) - load 32-bit word
lwu reg,imm(reg) - load 32-bit word unsigned
sw reg,imm(reg) - store 32-bit word
ld reg,imm(reg) - load 64-bit double-word
sd reg,imm(reg) - store 64-bit double-word
l.d freg,imm(reg) - load 64-bit floating-point
s.d freg,imm(reg) - store 64-bit floating-point
halt - stops the program
daddi reg,reg,imm - add immediate
daddui reg,reg,imm - add immediate unsigned
andi reg,reg,imm - logical and immediate
ori reg,reg,imm - logical or immediate
xori reg,reg,imm - exclusive or immediate
lui reg,imm - load upper half of register immediate
slti reg,reg,imm - set if less than immediate
sltiu reg,reg,imm - set if less than immediate unsigned
beq reg,reg,imm - branch if pair of registers are equal
bne reg,reg,imm - branch if pair of registers are not equal
beqz reg,imm - branch if register is equal to zero
bnez reg,imm - branch if register is not equal to zero
j imm - jump to address
jr reg - jump to address in register
jal imm - jump and link to address (call subroutine)
jalr reg - jump and link to address in register
dsll reg,reg,imm - shift left logical
dsrl reg,reg,imm - shift right logical
dsra reg,reg,imm - shift right arithmetic
dsllv reg,reg,reg - shift left logical by variable amount
dsrlv reg,reg,reg - shift right logical by variable amount
dsrav reg,reg,reg - shift right arithmetic by variable amount
movz reg,reg,reg - move if register equals zero
movn reg,reg,reg - move if register not equal to zero
nop - no operation
and reg,reg,reg - logical and
or reg,reg,reg - logical or
xor reg,reg,reg - logical xor
slt reg,reg,reg - set if less than
sltu reg,reg,reg - set if less than unsigned
dadd reg,reg,reg - add integers
daddu reg,reg,reg - add integers unsigned
dsub reg,reg,reg - subtract integers
dsubu reg,reg,reg - subtract integers unsigned
dmul reg,reg,reg - signed integer multiplication
dmulu reg,reg,reg - unsigned integer multiplication
ddiv reg,reg,reg - signed integer division
ddivu reg,reg,reg - unsigned integer division
add.d freg,freg,freg - add floating-point
sub.d freg,freg,freg - subtract floating-point
mul.d freg,freg,freg - multiply floating-point
div.d freg,freg,freg - divide floating-point
mov.d freg,freg - move floating-point
cvt.d.l freg,freg - convert 64-bit integer to a double FP format
cvt.l.d freg,freg - convert double FP to a 64-bit integer format
c.lt.d freg,freg - set FP flag if less than
c.le.d freg,freg - set FP flag if less than or equal to
c.eq.d freg,freg - set FP flag if equal to
bc1f imm - branch to address if FP flag is FALSE
bc1t imm - branch to address if FP flag is TRUE
mtc1 reg,freg - move data from integer register to FP register
mfc1 reg,freg - move data from FP register to integer register