PC 相对地址生成
AUIPC 将 20 位 U-immediate 左移 12 位形成 32 位偏移;RV64 先符号扩展,再加到本条指令地址 PC,结果写入 rd。可与 JALR 或加载/存储指令组成 PC 相对访问序列。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture, version 20260120, §2.4 Integer Computational Instructions将 20 位 U-immediate 形成的 32 位偏移加到本条指令 PC;RV64 先符号扩展偏移,结果写入 rd
AUIPC 使用 U-type 编码(opcode=0010111)。汇编操作数是 20 位 U-immediate:低 12 位补零形成 32 位偏移,在 RV64 上先符号扩展到 64 位,再加到 AUIPC 指令自身的地址,结果保留低 XLEN 位写入 rd。AUIPC 自身不跳转、不访问数据内存。它可与 JALR 或 load/store 的 12 位偏移组成 PC 相对访问序列;RV32 可覆盖 32 位 PC 相对地址,RV64 的组合偏移范围为 [-2^31-2^11, 2^31-2^11-1]。
从机器码字段解析开始,依次展示操作数读取、该指令专属语义计算和 ISA 可见状态更新。
本例使用固定寄存器初值和初始 PC=0x2000;取指成功,没有异步中断或额外扩展检查。异常分支只显示普通提交停止,陷入后的 PC 和处理程序状态由 EEI 决定。
机器码按当前指令格式切成字段,动画从 encoding/decode 开始。
该动画展示 ISA 可见的解码和状态变化,不表示任何特定 CPU 的流水线、缓存、预测或时序实现。
AUIPC 将本条指令的 PC 与 U-immediate 形成的偏移相加。RV64 先将该 32 位偏移符号扩展到 XLEN;它只生成地址,常与 JALR 或 load/store 配合。
以下要点按 RISC-V Unprivileged ISA 手册核准,用于补充操作语义、立即数范围和边界行为。
AUIPC 将 20 位 U-immediate 左移 12 位形成 32 位偏移;RV64 先符号扩展,再加到本条指令地址 PC,结果写入 rd。可与 JALR 或加载/存储指令组成 PC 相对访问序列。
The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture, version 20260120, §2.4 Integer Computational InstructionsRV32I/RV64I,PC=0x2000:auipc x5, 0x1000 得到 x5=0x01002000;只生成寄存器地址值,不跳转或访问数据内存。
RV32I/RV64I,PC=0x2000:auipc x5, 0x1000 得到 x5=0x01002000;只生成寄存器地址值,不跳转或访问数据内存。
官方语义使用 AUIPC 指令自身的地址作为 PC 基址。
常与 JALR 组成远距离 PC 相对跳转,或与 load/store 的 12 位偏移组成 PC 相对数据访问。