我以为我已经明白了这一点,但我想我把自己搞糊涂了。

我的印象是11:0是编码中立即位的顺序。例如,addi x1, x2, 12的立即数为000000001100;立即数从addi指令编码中的第20位开始。
我搞不懂这个逻辑如何适用于U型编码31:12中使用的相同符号。我知道U型立即数是20位,但我现在不确定如何解释这个符号。
发布于 2021-05-02 17:02:21
U型用于lui,其中立即数进入Rd的高20位,而低12位被清除。或者对于auipc,相同的解码;位[31:12]来自指令,低12位是隐式0。
因此,位数是解码后的值中的位置,而不仅仅是立即数本身。
图中的位置显示每个值位在机器编码中的位置; [hi:lo] 位范围数字显示此字段映射到哪个值位(完整的32位或64位整数)。
有关其余RISC-V即时组件的更多一般内容,请参阅ISA文档中的设计注释,在几个问答中引用和扩展:
https://stackoverflow.com/questions/67354485
复制相似问题