MIPS 跳跃范围

MIPS Jump Range

我目前正在为考试学习,以下问题出现在其中一门旧考试中:

给出从当前指令 1.073.742.000(Dec) 到 221860(Dec) 跳转的 MIPS 代码。

现在第一个问题是j标签指令比jr指令更有效吗?

其次,我假设 221860 超出了从 1073742000 跳转的范围,因为它位于不同的 256 MB 块中?所以在这种情况下我别无选择,只能使用 jr 对吗?

is the j label instruction more efficent than the jr instruction?

他们有不同的目的。

J用于每次跳转都想跳转到同一个地址,且目标地址在同一个256MB区域内。如果目标地址在 +/- 128kB 范围内,您也可以使用 B(只要目标地址在给定的限制范围内,B 也可以跨越 256MB 的区域边界)。由于使用 JR 还需要一条或多条指令将目标地址加载到寄存器中,因此必须将它用于所有无条件跳转会很乏味。

JR 用于在不同场合跳转到不同地址(例如,从函数返回,可能会从多个不同的地方调用),或者跳转到不同的 256MB 区域.

So in this case I would've no choice but to use jr right?

没错。