MIPS
E.G
A[100] $19,h $18,临时 $8
1 | A[10] = h + A[3] |
指令基本格式
R 寄存器 (Register|6bit opcode|5bit rs|5bit rt|5bit rd|5bit shamt|6bit func)
opcode:指令类型
rs:第一个源操作数所在寄存器的编号
rt:第二个源操作数所在寄存器的编号
rd:目的操作数的寄存器编号
add $s1,$s2,$s3 // $s1 = $s2 + $s3
op | rs(s2/18(H)) | rt(s3/19(H)) | rd(s1/17(H)) | shamt | func |
---|---|---|---|---|---|
000000 | 10010 | 10011 | 10001 | 00000 | 100000 |
sll $s1,$s2,5 // $s1 = $s2 << 5
op | rs(0) | rt(s2/18(H)) | rd(s1/17(H)) | shamt(5) | func |
---|---|---|---|---|---|
000000 | 00000 | 10010 | 10001 | 00101 | 000000 |
I 立即数 Immediate 16位(6bit opcode|5bit rs|5bit rt|16bit immediate)
- opcode:指令类型
- rs:第一个源操作数所在寄存器的编号
- rt:目的操作数所在寄存器的编号
addi $21,$22,-50 //$21=$22+(-50)
op | rs($22) | rt($21) | immediate |
---|---|---|---|
001000 | 10110 | 10101 | 1110010 -> 1111 1111 1100 1110(FFCE) |
lw $s1,-50($s2)
op | rs($s2) | rt($s1) | immediate |
---|---|---|---|
100011 | 10010 | 10001 | 1111 1111 1100 1110(FFCE) |
c
1 | if(i==f) |
transform
1 | i:$3 |
J 跳转 Jump 26位(6bit opcode|26bit address)
e.g
c
1 | if(i==f) |
transform
1 | bne $s3,$s4, |
不同维度
运算指令 | add rd,rs,rt sll rd,rt,shamt |
addi rt,rs,imm slti rt,rs,imm |
/ |
---|---|---|---|
访存指令 | / | lw rt,imm(rs) sw rt,imm(rs) |
/ |
分支指令 | jr rs | beq rs,rt,imm | j addr |
R型指令 | I型指令 | J型指令 |
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !