risc架构处理器的分支指令类型?

1. 无条件跳转/分支(unconditional jump/branch)指令

无条件跳转/分支指令是指(不需要判断条件)一定发生跳转的指令。按照跳转的目标地址计算方式,无条件跳转/分支分为以下两种。

(1)无条件直接跳转/分支指令。此处的“直接”是指跳转的目标地址从指令编码中的立即数可以直接计算。risc-v架构中的jal(jump and link)指令便属于无条件直接跳转指令。例如:在“jal x5,offset”中,jal使用编码在指令字中的20位立即数(有符合数)作为偏移量。该偏移量乘以2,然后与当前指令所在的地址相加,得到最终的跳转目标地址。

(2)无条件间接跳转/分支指令。此处的“间接”是指跳转的目标地址需要从寄存器索引的操作数中计算出来。risc-v架构中的jalr(jump and link-register)指令便属于无条件间接跳转指令。例如,在“jalr x1,x6,offset”中,jalr使用编码在指令字中的12位立即数(有符合)作为偏移量,与jalr的另外一个寄存器索引操作数(基地址寄存器)相加得到最终的跳转目标地址。

2. 带条件跳转/分支指令

带条件跳转/分支指令是指需要根据判断条件决定是否发生跳转的指令。按照跳转的目标地址计算方式,带条件跳转/分支指令分为以下两种。

(1) 带条件直接跳转/分支指令。此处的“直接”是指跳转的目标地址从指令编码中的立即数可以直接计算。以risc-v架构为例,它有6条带条件分支指令,这种带条件的分支指令与普通的运算指令一样直接使用两个整型操作数

你可能感兴趣的:(芯片设计基础,risc-v,架构)