RISC-V(Reduced Instruction Set Computer - Vector)是一种开源的指令集架构(ISA),旨在通过模块化、可扩展性和简洁性来支持从嵌入式系统到高性能计算的广泛应用。RISC-V 的设计哲学强调减少指令的复杂性,以提高处理器的性能和能效。 2. jalr 指令的功能 jalr(Jump And Link Register)是 RISC-V 指令集中的一个...
JALR指令的格式为:JALR rd, rs1, imm。其中rd是目标寄存器,rs1是用于提供跳转地址的寄存器,imm是跳转的相对地址。 JALR指令的优势: 可以实现更灵活的跳转,目标地址由寄存器提供,可以根据运行时的需求进行跳转。 可以用于实现函数返回时的跳转。 JALR指令的应用场景: 条件跳转:JALR指令可以根据运行时的条件进行跳转,...
JALR的offset也是带符号位扩展的,JALR偏移的地址范围在rs1寄存器中存储地址的+/- 2KB(2 ^ 12 = 4096 = 4 KB = +/- 2KB)。定义JALR指令是为了使两个指令序列可以在32位绝对地址范围内的任意位置跳转(因为JAL指令的跳转范围不够大)。 示例: JALR x13,0(x1) 跳到x1寄存器里存储的地址,并将下一条指令...
间接跳转直接JALR如下: JALR指令会把12位立即数和源寄存器相加,并把相加结果末位清零,作为新的跳转地址。同时和JAL指令一样,也会把紧随其后的那条指令地址,存入目标寄存器中。 5.4 其他指令 除了内存地址空间和通用寄存器地址空间外,RISC-V 还定义了一个独立的控制和状态寄存器地址空间(Control Status Register) 每个...
所以可以认为RISC-V包括两种寻址模式,一种是PC相关寻址(jal、BRANCH),一种是寄存器寻址(jalr、LOAD/STORE)。不过实际上寄存器寻址可以再分成PC和绝对地址两种,这是通过结合auipc和lui指令来实现,如下面的汇编所示。因此,RISC-V中实际上是支持PC相关和绝对地址两种寻址模式,其中jal和BRANCH指令只支持PC相关寻址,jalr和...
为什么移位的指令只需要5位的shamt呢? 因为我们的位只有32位,5位可以表示0-31,什么东西移动超过32位就没有意义了,本来就只有32位。 Jalr jalr rd,rs1,offset 会把PC+4写入到rd中(return address) 把pc设置为 rs1+offset 和逻辑运算或者加载数据使用同样格式的immediate ...
同时JAL 会把紧随其后的那条指令地址,存入目标寄存器中。这样,如果目标寄存器是零,则JAL就等同GOTO指令;如果目标寄存器不为零,JAL可以实现函数调用功能。 间接跳转直接JALR如下: JALR指令会把12位立即数和源寄存器相加,并把相加结果末位清零,作为新的跳转地址。同时和JAL指令一样,也会把紧随其后的那条指令地址,存入...
auipc指令将立即数左移12位加到PC上。这样,可以将auipc中的20位立即数与jalr中的12位立即数组合,将...
JALR指令的offset也是带符号位扩展的,地址范围为rs1寄存器中存储地址的+/- 2KB。有条件分支跳转指令都是B-type编码格式。它们通过比较两个寄存器的值,根据比较结果执行跳转操作。例如,BEQ指令在rs1和rs2相等时执行跳转;BNE指令在rs1和rs2不相等时执行跳转;BLT指令在rs1小于rs2时执行跳转;BLTU...
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...