寻址方式
- 寻址方式就是怎样确定目标操作数的地址
- 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寻址方式计算出目标指令的地址

本文介绍了MIPS处理器中的五种寻址方式:寄存器寻址、立即数寻址、基址寻址、相对PC寻址和伪直接寻址。寄存器寻址使用寄存器中的值作为操作数;立即数寻址使用16-bit立即数;基址寻址通过基址和符号扩展的立即数计算地址;相对PC寻址用于确定指令序列,尤其是跳转指令的地址计算;伪直接寻址则受限于指令长度,通过组合PC值和指令中的地址字段来确定目标地址。
最低0.47元/天 解锁文章
5379

被折叠的 条评论
为什么被折叠?



