MIPS指令集(学习笔记)
先序:
1.指令存储在存储器当中,每条指令包括操作类型、操作数。
2.MIPS汇编语法规定,可以用两种方式表示寄存器,比如 10 或 10或 10或t2都是”10号寄存器“
3.MIPS指令集一共包含三种类型的指令:
(1).R型(寄存器类型):操作数全部存放在寄存器中
遵循格式:<操作码> <目的寄存器>,<源操作数寄存器> ,<源操作数寄存器>
从上可看出,指令格式中没有常数(立即数),只有寄存器,因此称为R(register)型指令
(2).I型(立即数类型):操作数不全存放在寄存器中
遵循格式:<操作码> <目的寄存器>,<源操作数寄存器> ,<立即数>
指令中既有寄存器,也有立即数(常数),因此这种指令被称为I(Immediate)型指令
(3).J型(跳转类型):用于汇编语句的跳转
4.MIPS中的标签(Label)
标签可以表示某个数据或者某条指令的地址
指令合集:
操作码 | 指令类型 | 样例 | 解释 |
---|---|---|---|
addi | i型指令 | addi $s8, $0, 32 | s8 = 0 + 32 |
ori | i型指令 | ori $1, $2, 10 | $1 = $2 | 10 |
lw | i型指令中的访存指令 | lw s 1 , 20 ( s1, 20( s1,20(s2) | s1 = Memory[$s2+20],将一个字从内存取到寄存器 |
sw | i型指令中的访存指令 | sw s 1 , 20 ( s1, 20( s1,20(s2) | Memory[ s 2 + 20 ] = s2+20]= s2+20]=s1,将一个字从寄存器取到内存 |
bne | 决策指令有条件跳转(I型指令) | bne $s0, $s1, Label | branch not equal,当 s 0 ! = s0!= s0!=s1时跳转到Label |
beq | 决策指令有条件跳转(I型指令) | beq $s0, $s1, Label | branch equal,当$s0 = $s1时跳转到Label |
bge | 决策指令有条件跳转(I型指令) | bge $s0, $s1, Label | 当$s0 >= $s1时跳转 |
bgt | 决策指令有条件跳转(I型指令) | bgt $s0, $s1, Label | 当$s0 > $s1时跳转 |
ble | 决策指令有条件跳转(I型指令) | ble $s0, $s1, Label | 当$s0 <= $s1时跳转 |
blt | 决策指令有条件跳转(I型指令) | blt $s0, $s1, Label | 当$s0 < $s1时跳转 |
j | 决策指令无条件跳转 | j Label | 执行后跳转到Label |
b | 决策指令无条件跳转 | b Label | 执行后跳转到Label |
jr | 决策指令无条件跳转 | jr $ra | 执行后将PC值修改为ra寄存器中的值 |