【问题标题】:MIPS Branch instruction jumping beyond rangeMIPS 跳转指令超出范围
【发布时间】:2019-02-28 04:05:48
【问题描述】:

我了解在用于 PC 寻址的 MIP 中存在最大跳转范围。但是,如果我想跳转的地址超出范围怎么办?

beq $s0, $s1, L1

其中 L1 是远离 PC 的父亲,而不是 bnebeq 所能支持的。有什么办法可以构造一个等效的代码序列?

【问题讨论】:

  • @RaymondChen 这不是我要问的问题。我并不是要“分支到 32 位地址”。现在我的直接任务是使用 PC 寻址,我想问是否有一种方法可以超越 PC 寻址的方式,使用与我正在使用的代码序列不同的代码序列,这是直接超越范围。
  • 对不起。如果您要使用的指令无法达到您想要的目标,您将不得不切换到某种类型的跳转指令,因此我提供了包含建议的副本。

标签: mips


【解决方案1】:

因此,如果 I-Type 命令的 16 位不足以用于 L1,您可以使用 J-Type,因为它有 26 位用于您的地址(只需围绕它构建您的 if)。MIPS I-Type vs J-Type

如果这还不够,您应该使用以下方式将您的地址保存到寄存器中:la $t0, L1 然后使用:jr $t0 跳转到该寄存器 如果您先将其保存到寄存器中,您将拥有完整的 32 位地址。

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 2012-08-21
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多