链接地址
JAL 会把下一条指令地址(pc+4)写入 rd。使用 rd=x0 时不会保存返回地址,因此可作为无条件跳转。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture, version 20260120, §2.5 Control Transfer Instructions以PC相对偏移跳转,并将返回地址(PC+4)写入rd
JAL 采用 J 型格式(opcode=1101111)。有符号字节偏移必须为偶数,范围为 -1048576 到 1048574;符号扩展后与当前 JAL 指令地址相加,按 XLEN 回绕得到目标地址。成功执行时将 PC+4 写入 rd;rd=x0 时丢弃链接地址写入(伪指令 J)。rd=x1 或 x5 提供隐式返回地址栈(RAS)预测提示。IALIGN=32 时,目标不是 4 的倍数会在 JAL 上引发指令地址未对齐异常;IALIGN=16 时,JAL 的偶数目标不会引发该异常。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
本例使用固定寄存器初值和初始 PC=0x2000;取指成功,没有异步中断或额外扩展检查。异常分支只显示普通提交停止,陷入后的 PC 和处理程序状态由 EEI 决定。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该动画展示 ISA 可见的解码和状态变化,不表示任何特定 CPU 的流水线、缓存、预测或时序实现。
JAL 是 PC 相对无条件跳转并链接:目标由 J-type 偏移加当前 PC 得到,同时把 pc+4 写入 rd;rd=x0 时只跳转不保存返回地址。
以下要点按 RISC-V Unprivileged ISA 手册核准,用于补充操作语义、立即数范围和边界行为。
JAL 会把下一条指令地址(pc+4)写入 rd。使用 rd=x0 时不会保存返回地址,因此可作为无条件跳转。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture, version 20260120, §2.5 Control Transfer InstructionsJ-type 字节偏移是 -1048576 到 1048574 范围内的偶数;与当前指令 PC 相加并按 XLEN 回绕得到目标地址。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture, version 20260120, §2.5 Control Transfer InstructionsRV32I/RV64I、IALIGN=32 示例:PC=0x2000 时,jal ra, 256 成功跳到 0x2100,ra=0x2004。
RV32I/RV64I、IALIGN=32 示例:PC=0x2000 时,jal ra, 256 成功跳到 0x2100,ra=0x2004。
JAL 把下一条指令地址 pc+4 写入 rd。
目标是当前 PC 附近的直接偏移时用 JAL;目标来自寄存器或需要 AUIPC+JALR 序列时用 JALR。