MIPS32的指令字长是32位的定长格式,采用的是寄存器与立即数方式相结合的寻址方式,在指令中给出寄存器编号或者立即数。
整个指令集由3类指令构成:R型(寄存器型)指令、I型(立即数型)指令和J型(转移型)指令。
MIPS32架构的指令格式统一定义如下:
(1) R型指令
R型指令也称为寄存器型指令,其取操作数和保存结果都在寄存器中进行。
- OP:指令的操作码,6位,标识指令的基本类型,所有R型指令的操作码都为全0。
- rs:源寄存器编号,5位,用来保存第一个源操作数。
- rt:源寄存器编号,5号,用来保存第二个源操作数。
- rd:目的寄存器编号,5位,用来保存运算结果。
- shamt:常数,5位,用来保存常数,在移位指令中会使用到。
- func:功能辅助说明字段,6位。因所有R型指令的操作码都一样(6个0),所以在指令中需要通过func字段来进一步指明R型指令执行何种功能操作。
(2)I型指令
因为指令中使用了一个16位的立即数字段imm,所以I型指令也称为立即数型指令。
- OP:指令的操作码,6位,用来标识指令的操作类型,不同操作对应的代码不同
- rs:源寄存器编号,5位,其中保存了一个操作数。
- rt:目的寄存器编号,5位,用来保存指令的操作结果。
- imm:立即数字段,16位,为指令提供第二个操作数。
(3)J型指令
J型指令的结构最简洁,只包括两个指令代码段,它的主要作用是实现无条件转移。
- OP:指令的操作码,6位,用来标识指令的无条件转移类型。
- Address:地址码字段,26位,用来提供指令转移的相对偏移量。