浅谈RISC-V指令集的基本指令格式和立即数操作( 二 )

需要说明的是,上面这些扩展都是有符号扩展,如果对无符号数进行扩展,并没有看到很明显的收益,所以对于无符号数而言,没有进行扩展的指令,这也使得整个ISA更加简洁。

立即数编码

立即数处理,除了上面四种之外,还有两种变形(SB/UJ),立即数基本指令格式如下图所示:

图二 立即数基本指令格式

对比图一和图二,我们不难看出,在SB格式中,(imm[10:1])和符号位被放在了固定的位置上面。SB中的最高位(imm[11])被刚在S格式中的最低位(inst[7])。U和UJ格式的区别与S和SB类似,就不再赘述。

在指令集中,立即数的符号扩展操作非常重要,为了立即数操作的高效性,在RISC-V中,将所有立即数的符号位固定在了指令的31位,这使得在指令译码的时候,可以同时进行立即数的符号扩展操作。虽然将立即数放在在指令中的固定位置,对于一些复杂的实现来讲,收益有限(因为会有对应的硬件开销支撑),但是这一做法仍然可以降低硬件电路的开销。

小结

推荐阅读