基本知识
定义:计算机语言中的基本单词称为指令,一台计算机的全部指令称为该计算机的指令集。
指令集:MIPS(RISC)、ARMv7/ARMv8(RISC)、Intel x86(CISC)。
字(Word):MIPS体系架构中,寄存器大小为32位,称32位为一个字。
补码:计算机中有符号整数的最高位作为符号位,负数使用补码表示,x + (~x) = -1,所以负数的表示形 式为-x = (~x)+1。
逻辑右移与符号右移:位右移时使用0填充高位与使用符号位填充高位的区别。
MIPS指令集
指令格式
32位MIPS指令集的长度均为32位,保持所有指令长度相同,但不同类型指令有不同的格式,为R型MIPS字段命名如下:
op |
rs |
rt |
rd |
shamt |
funct |
6位 |
5位 |
5位 |
5位 |
5位 |
6位 |
指令操作码 |
源寄存器1 |
源寄存器2 |
目的寄存器 |
位移量(移位指令) |
功能码 |
I型指令
op |
rs |
rt |
constant or address |
6位 |
5位 |
5位 |
16位 |
指令操作码 |
源寄存器 |
目的寄存器 |
立即数或地址 |
R型指令
op |
rs |
rt |
rd |
shamt |
funct |
6位 |
5位 |
5位 |
5位 |
5位 |
6位 |
指令操作码 |
源寄存器 |
寄存器2 |
目的寄存器 |
位移量(移位指令) |
功能码 |
J型指令
指令:j 10000
op |
address |
6位 |
26位 |
2 |
10000 |
指令:bne $s0,$s1,Exit
op |
rs |
rt |
address |
6位 |
5位 |
5位 |
16位 |
5 |
16 |
17 |
Exit |
寄存器与编码
Register |
Regsiter Code Value(op字段) |
Description |
zero |
0 |
存储0值,用于辅助计算 |
v0—>v1 |
2~3 |
过程调用:返回值寄存器 |
a0—>a3 |
4~7 |
过程调用:参数寄存器(Argument Register),传递参数值 |
t0—> t7 |
8~15 |
8个临时寄存器(Temporary Register),过程调用时无需保存旧值 |
s0—> s7 |
16~23 |
8个保留寄存器(Saved Register),过程调用时需要被压栈保存并恢复 |