XLEN
当前整数寄存器宽度。RV32 的 XLEN=32,RV64 的 XLEN=64。
面向初学者优先收录 RISC-V 架构、特权级和内核开发中最常遇到的高频术语。每一条都力求简洁准确,方便在阅读指令、ABI、CSR 和内核代码时快速对照。
当前整数寄存器宽度。RV32 的 XLEN=32,RV64 的 XLEN=64。
应用二进制接口。函数调用约定只是其中一部分,还包括寄存器分工、栈布局、对象文件和重定位等二进制级契约。
调用方自己负责保住的寄存器;调用别的函数前,想继续用就先保存。
被调用函数如果借用了这些寄存器,返回前必须恢复。
把较窄的有符号值扩成更宽位数时,用原最高位填充高位。
把较窄的无符号值扩成更宽位数时,高位全部补 0。
直接写在指令里的常量,不需要先放到寄存器里。
为了书写方便提供的汇编别名,汇编器会展开成真实指令。
RISC-V 有三种特权模式:M 模式(最高,机器级,固件/调试)、S 模式(中间,管理员级,OS 内核)、U 模式(最低,用户级,应用程序)。S 模式可选;嵌入式场景可能只有 M+U。
控制和状态寄存器,在独立的 12 位地址空间中(编号 0–4095)。用 csrrw/csrrs/csrrc 等专用指令读写。管理和监控 CPU 的配置、状态、中断和内存保护。
环境调用指令。执行后产生 environment-call 异常;后续陷阱路径取决于当前特权级、委托配置和执行环境。陷阱 PC 记录触发异常的那条 ecall 本身,而不是下一条指令。
mret 从 M 模式陷阱返回,sret 从 S 模式陷阱返回。返回时恢复 trap 前的 PC(从 mepc/sepc)、特权模式(从 mstatus.MPP/SPP)和中断使能(从 MPIE→MIE / SPIE→SIE),并按规范更新这些状态位。
机器/管理员异常 PC。trap 进入时保存触发陷阱的指令地址:对同步异常通常是 faulting instruction 本身,对中断则是被打断的控制流位置。mret/sret 使用它恢复 PC。
机器/管理员陷阱向量基址寄存器。存放陷阱处理函数的入口地址。低 2 位指定模式:0(直通,所有陷阱跳 BASE)、1(向量,同步异常跳 BASE,中断跳 BASE+4×cause)。
陷阱原因寄存器。最高位 1=中断、0=异常。低几位编号标识具体原因:如中断 7=MTI,异常 2=非法指令、8=U 模式 ecall、12=指令缺页。
机器/管理员状态寄存器。mstatus 包含 MIE/MPIE/MPP 等 M-mode trap 状态;sstatus 是 S-mode 可见状态视图,包含 SIE/SPIE/SPP 等 S-mode 相关字段。FS 等扩展状态字段是否有意义取决于实现和扩展状态。
陷阱值寄存器,可在部分异常中提供额外诊断值。地址或缺页类异常通常用于报告 faulting virtual address;非法指令异常若实现提供非零值,可包含指令位;否则也可能为 0。
常见平台实现中的本地中断/计时器模块名称,不是基础 ISA 必备部件。许多旧平台用它提供 MSIP、mtime、mtimecmp 等机器级软件/定时器中断相关寄存器。
平台级中断控制器的常见名称,用于聚合外部设备中断并路由到 hart。外部中断控制器属于平台规范/实现语境,不是 RISC-V 基础整数 ISA 指令语义。
物理内存保护。M 模式通过 pmpcfg/pmpaddr 寄存器为每个物理区域配置 R/W/X 权限和地址匹配模式。可对低特权级限制物理地址访问,是嵌入式和 M 模式固件的基础安全机制。
页表中的一项。在 Sv39 中为 64 位,包含:V(有效)、R/W/X(读/写/执行)、U(用户态可访问)、G(全局)、A(已访问)、D(已修改)标志,以及 PPN(物理页号)。非叶子 PTE 需要 V=1 且 R=W=X=0,表示指向下一级页表。
39 位虚拟地址空间方案(RV64 常见)。虚拟地址以 bit 38 为符号位做高位符号扩展;采用 3 级 4 KiB 页表,每级 512 项(9 位索引),共覆盖 512 GiB。satp 存根页表 PPN,VPN[2]/VPN[1]/VPN[0] 逐级索引,12 位 offset 对应 4 KiB 页内偏移。
管理员地址翻译和保护寄存器。MODE 字段选择翻译方案,ASID 区分地址空间,PPN 指向根页表。切换地址空间或更新页表后,软件通常需要按规范在合适位置执行 sfence.vma,让地址转换结构变更对后续取指/访存可见。
本页参考以下官方 RISC-V 文档组织架构、ABI、CSR 和伪指令说明;平台或操作系统 ABI 差异仍需按对应规范核验。