【问题标题】:Question about translation between "jump" and "jump and link"关于“jump”和“jump and link”翻译的问题
【发布时间】:2019-10-10 16:16:09
【问题描述】:

在 risc-v 规范中,它说 j 是 jal 的伪代码。我对它的工作原理感到困惑,因为j(25 位立即数)和jal(20 位立即数)的立即数范围是不同的,jalr 也有 12 位立即数。

任何关于如何处理此翻译的说明将不胜感激!

【问题讨论】:

  • 你在哪里看到 j 伪代码指令的立即数是 25 位?
  • @FabienM 我们的演讲幻灯片表明,对于跳转伪操作,有 7 位操作码,其余 25 位用于立即偏移量。所以为了澄清一下,在跳转指令中加载 >20 位偏移量不会将其转换为 lui+jalr 指令以容纳额外的位,而 20 位是跳转的最大立即偏移量?

标签: riscv


【解决方案1】:

不,正如官方文档所说,j 和 jal 的立即值大小没有区别:

普通无条件跳转(汇编程序伪指令 J)被编码为 rd=x0 的 JAL。

以下说明:

j offset

将扩展为

jal x0, offset

也许您认为编码 rd 寄存器 (x0) 的 5 位包含在偏移量中,但没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2019-08-03
    相关资源
    最近更新 更多