RISC-V(Reduced Instruction Set Computer - Vector)是一种开源的指令集架构(ISA),旨在通过模块化、可扩展性和简洁性来支持从嵌入式系统到高性能计算的广泛应用。RISC-V 的设计哲学强调减少指令的复杂性,以提高处理器的性能和能效。 2. jalr 指令的功能 jalr(Jump And Link Register)是 RISC-V 指令集中的一个...
JALR的offset也是带符号位扩展的,JALR偏移的地址范围在rs1寄存器中存储地址的+/- 2KB(2 ^ 12 = 4096 = 4 KB = +/- 2KB)。定义JALR指令是为了使两个指令序列可以在32位绝对地址范围内的任意位置跳转(因为JAL指令的跳转范围不够大)。 示例: JALR x13,0(x1) 跳到x1寄存器里存储的地址,并将下一条指令...
JALR(Jump and Link Register)指令也用于跳转,但是目标地址是由寄存器提供的。JALR指令的格式为:JALR rd, rs1, imm。其中rd是目标寄存器,rs1是用于提供跳转地址的寄存器,imm是跳转的相对地址。 JALR指令的优势: 可以实现更灵活的跳转,目标地址由寄存器提供,可以根据运行时的需求进行跳转。
JALR的offset也是带符号位扩展的,JALR偏移的地址范围在rs1寄存器中存储地址的+/- 2KB(2 ^ 12 = 4096 = 4 KB = +/- 2KB)。定义JALR指令是为了使两个指令序列可以在32位绝对地址范围内的任意位置跳转(因为JAL指令的跳转范围不够大)。 示例: JALR x13,0(x1) 跳到x1寄存器里存储的地址,并将下一条指令...
尽管RISC-V 指令集本身并没有对 JAL 或 JALR 中目标寄存器的取值做出限制, 但是根据前面提到的函数调用约定(Calling Convention),JAL/JALR 常用的目标 寄存器有 x1(ra,返回地址)和 x5(t0,替代链接寄存器)。对普通的函数调用, x1(ra)会被用来存放返回地址。然而,表 1 的调用约定中还定义了 x5(替代链 接寄存器...
1.控制转移指令 RV32I中控制转移指令主要有两类:无条件跳转和有条件跳转。 2.无条件跳转 无条件跳转指令均使用PC相对寻址。无条件跳转主要包括两条指令:JAL 和 JALR。 2.1 JAL JAL指令是用J-type格式(JAL是RV32I中唯一J-type的指令)。 JAL的指令格式为 JAL rd,offset。x[rd] = pc+4; pc += sext(off...
JALR指令会把12位立即数和源寄存器相加,并把相加结果末位清零,作为新的跳转地址。同时和JAL指令一样,也会把紧随其后的那条指令地址,存入目标寄存器中。 5.4 其他指令 除了内存地址空间和通用寄存器地址空间外,RISC-V 还定义了一个独立的控制和状态寄存器地址空间(Control Status Register) 每个处理器实现的CSR会因设...
为什么移位的指令只需要5位的shamt呢? 因为我们的位只有32位,5位可以表示0-31,什么东西移动超过32位就没有意义了,本来就只有32位。 Jalr jalr rd,rs1,offset 会把PC+4写入到rd中(return address) 把pc设置为 rs1+offset 和逻辑运算或者加载数据使用同样格式的immediate ...
JALR指令会把12位立即数和源寄存器相加,并把相加结果末位清零,作为新的跳转地址。同时和JAL指令一样,也会把紧随其后的那条指令地址,存入目标寄存器中。 5.4 其他指令 除了内存地址空间和通用寄存器地址空间外,RISC-V 还定义了一个独立的控制和状态寄存器地址空间(Control Status Register)每个处理器实现的CSR会因设计...
JALR指令的offset也是带符号位扩展的,地址范围为rs1寄存器中存储地址的+/- 2KB。有条件分支跳转指令都是B-type编码格式。它们通过比较两个寄存器的值,根据比较结果执行跳转操作。例如,BEQ指令在rs1和rs2相等时执行跳转;BNE指令在rs1和rs2不相等时执行跳转;BLT指令在rs1小于rs2时执行跳转;BLTU...