RISC-V分支指令寻址,在之前的B类型指令就是其中之一。
这种格式可以表示从-4096到4094的分支地址,以2的倍数表示。B型格式包括一个7位操作码、一个3位功能码、两个5位的寄存器操作数( rs1和 rs2)和一个12位地址立即数。该地址使用特殊的编码方式,简化了数据通路设计,但使组装变得复杂。下面这条指令
其中条件分支的操作码是11001112,而bne 的funct3码是0012
RISC-V的无条件跳转–链接指令(jal),是分支寻址的另一种方法,也是唯一使用J型格式的指令。该指令由一个7位操作码、一个5位目标寄存器操作数(rd)和一个20位地址立即数组成。链接地址,即jal之后的指令的地址,被写入rd 中。
如果程序的地址必须适合这个20位字段,则意味着没有程序可能大于220,所以另一种方法是指定一个与分支地址偏移量相加的寄存器,这样就允许程序大到264,并且仍然能够使用条件分支指令,以便分支指令可以按如下来计算:
程序计数器=寄存器内容+分支地址偏移量
这样就允许程序大到2^64,并且仍然能够使用条件分支指令
1.立即数寻址,操作数是指令本身的常量。
2.寄存器寻址,操作数在寄存器中。
3.基址或偏移寻址,操作数于内存中,其地址是寄存器和指令中的常量之和。
4.PC相对寻址,分支地址是PC和指令中常量之和。
注:加载和存储对字节、半字、字或双字的访问有不同的版本。
|