如果不采用分支,BGEZAL 和 BTLZAL 会修改 $31 吗?

Do BGEZAL and BTLZAL modify $31 if branch not taken?

根据 MIPS this 规范 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 分支没有被采用的意义何在?

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

link register 总是修改,即使分支没有被采用,这是因为硬件实现。很难实现不改变寄存器的硬件。然而,它总是被改变可以很容易地用软件来处理,只要在需要时保存 的先前值,而不管分支是否被改变..