在risc-v规范中,它说j
是jal
的伪代码。我对它的工作方式感到困惑,因为j
(25位立即数)和jal
(20位立即数)以及jalr
的立即数范围都不同12位立即数。
任何对翻译处理方式的澄清将不胜感激!
答案 0 :(得分:4)
不,正如官方文档所说,j
和jal
的立即值大小没有什么不同>
普通无条件跳转(汇编程序伪指令J)被编码为rd = x0的JAL。
以下说明:
j offset
将扩展到
jal x0, offset
也许您认为偏移量包含了对rd
寄存器(x0
)进行编码的5位,但没有。