寻址方式
- 寻址方式就是怎样确定目标操作数的地址
- MIPS中有五种寻址方式
寄存器寻址
- 操作数在寄存器中
- 例如: add $s0, $t2, $t3
- 例如: sub $t8, $s1, $0
立即数寻址
- 16-bit 立即数用作操作数
- 例如: addi $s4, $t5, -73
- 例如: ori $t3, $t7, 0xFF
基址寻址
- 操作数地址为: 基址+符号扩展的立即数
- 例如: lw $s4, 72($0)
- 地址= $0 + 72
- 例如: sw $ t2, -25($t1)
- 地址= $t1 -25
- 例如: lw $s4, 72($0)
相对PC寻址
- 前三种是对操作数的寻址,而相对PC寻址是对指令的寻址
- 想要形成完整的指令序列,不单单要知道本条指令的操作数在哪里,还要知道下一条指令的地址
- 通常情况下,指令顺序执行,下一条地址就是程序计数器PC的值+4
- 一些涉及到跳转的指令则要利用相对PC寻址来确实PC的新值
- 新的PC值= 立即数字段中偏移量×4 + PC值
- 下图就给出了示例,beq是跳转指令,在编译后会把它与目标指令的偏移量(相差的指令条数)以立即数的形式存储,然后通过相对PC寻址方式计算出目标指令的地址