【发布时间】:2012-10-21 18:28:32
【问题描述】:
某些 MIPS 指令具有立即偏移量。
例如,在移动lw 命令以填充beq 下方的分支延迟槽时,其直接偏移量从100 变为96。
PC Loop: lw $2, 100($3)
PC+4 addi $3, $3, 4
PC+8 beq $3, $4, Loop
变成了
PC Loop: addi $3, $3, 4
PC+4 beq $3, $4, Loop
PC+8 lw $2, 96($3) # branch delay slot
是不是因为 PC 总是 PC+4,所以它是 100 - 8 + 4 = 96 ? 如果指令向上移动会发生什么? 例如,
PC Loop: xxxxxxxxxxxxx
PC+4 addi $5, 4($5)
这是正确的吗?
PC Loop: addi $5, 4($5)
PC+4 xxxxxxxxxxxxx
【问题讨论】: