浅谈RISC-V指令集(四)- 条件分支

在以前的文章中,我分享了RISC-V用户可以在基本指令集的基础上面,进行定制化的设计,但是无论怎样,都要能够支撑整数基本指令集,可以看出基本指令集的重要性。我们已经详细介绍了RISC-V中非常重要的整数计算指令。想了解的同学可以看以前的文章“浅谈RISC-V指令集(二)- 整数计算指令”。我们已经分享了RISC-V中控制转移指令的无条件转移,今天我们继续另外一个条件分支。

条件分支指令格式

条件分支指令使用的是SB类指令格式,立即数在这里表示编码了一个2N的有符号数偏移量。在使用时,将偏移量加到pc,就构成了跳转的目标地址,需要说明的是跳转的范围相比无条件转移要差一些,只能到[-4KB,4KB](无条件转移可以到[-1MB,1MB])的范围。

在RISC-V中,条件分支指令的基本指令格式如下图所示:

其中src1/src2为两个5bit的寄存器,funct3中为src1和src2中数据比较结果的表示指令,可以表示相等、不相等、小于、大于等于的比较结果。

首先需要说明的是,整个比较过程有符号数和无符号数都分开进行比较。整个比较过程,可以描述如下。

推荐阅读