1、MIPS寻址方式
MIPS架构的寻址模式有寄存器寻址、立即数寻址、寄存器相对寻址和PC相对寻址4种,其中寄存器相对寻址、PC相对寻址介绍如下:
1.1、寄存器相对寻址
这种寻址模式主要被加载/存储指令使用,其对一个16位的立即数进行符号扩展,然后与指定通用寄存器的值相加,从而得到有效地址。
通用寄存器GRP + 16位立即数做符号扩展 = 有效地址
1.2、PC相对寻址
这种寻址模式主要被转移指令使用。在转移指令中有一个16位的立即数,将其左移2位并进行符号扩展,然后与程序计数器PC的值相加,可得到有效地址。
程序计数器PC + 16位立即数左移2位并做符号扩展 = 有效地址
2、MIPS指令集
2.1、MIPS指令特点
MIPS固定4字节指令长度。
内存中的数据访问(load/store)必须严格对齐(至少4字节对齐)。
跳转指令只有26位目标地址,加上2位对齐位,可寻址28位寻址空间,即256MB。
条件分支指令只有16位跳转地址,加上2位对齐位,共18位寻址空间,即256KB。
MIPS默认不把子函数的返回地址(就是调用函数的受害指令地址)存放到栈中,而是存放到$31($ra)寄存器中,这对那些叶子函数(在函数中不再调用其他函数的函数)有利。如果遇到嵌套函数,有其他机制处理。
流水线效应。MIPS采用了高度的流水线,其中一个最重要的效应就是分支延迟效应。在分支跳转语句后面的那条语句叫做分支延迟槽。实际上,在程序执行到分支语句时,当它刚把要跳转到的地址填充