Mips 如果没有分支,BGEZAL和BTLZAL是否修改$31?

Mips 如果没有分支,BGEZAL和BTLZAL是否修改$31?,mips,instruction-set,Mips,Instruction Set,根据MIPSBGEZAL的规范,执行以下操作: 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的目的是什么?分支机构没有被采用?我自己发现了这个问题,希

根据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的目的是什么?分支机构没有被采用?

我自己发现了这个问题,希望它能对其他人有用:

链接寄存器$31
总是被修改,即使没有执行分支,这是因为硬件实现。不改变寄存器的硬件很难实现。但是,无论是否更改分支,只要保存以前的值
$31
(如果需要)就可以轻松地用软件处理总是被更改的分支