如果不采用分支,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
总是修改,即使分支没有被采用,这是因为硬件实现。很难实现不改变寄存器的硬件。然而,它总是被改变可以很容易地用软件来处理,只要在需要时保存
的先前值,而不管分支是否被改变..
根据 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
总是修改,即使分支没有被采用,这是因为硬件实现。很难实现不改变寄存器的硬件。然而,它总是被改变可以很容易地用软件来处理,只要在需要时保存 的先前值,而不管分支是否被改变..