BGEZAL和BTLZAL修改31美元,如果不采取分支?

时间:2015-10-25 11:54:17

标签: mips isa

根据this MIPS规范BGEZAL执行以下操作:

I: tgt_offset ← sign_extend(offset || 02)
condition ← GPR[rs] ≥ 0GPRLEN
GPR[31] ← PC + 8
I+1: if condition then
PC ← PC + tgt_offset
endif

据我所知,即使没有采取分支,也会发生链接GPR[31] ← PC + 8。是这样还是我误解了?

如果是这样,那么链接id的重点是什么呢?

1 个答案:

答案 0 :(得分:1)

自己发现问题,希望它对其他人有用:

link register $31 始终修改即使未采用分支,这也是因为硬件实现。很难实现不改变寄存器的硬件。然而,它总是可以通过软件轻松处理,只需保存以前的$31值,无论分支是否被更改,都可以。{/ p>