rdcycle
RISC-V rdcycle 伪指令详解
汇编器伪指令RISC-V rdcycle 是读取 cycle CSR 的伪指令,展开为 csrrs rd, cycle, x0。它读取 cycle 的低 XLEN 位;在 XLEN 至少为 64 时可读取完整 64 位计数器。
你写下的是
rdcycle rd
常见真实展开
csrrs rd, cycle, x0
这条伪指令到底在帮你省什么
RISC-V Assembly Programmer's Manual将 rdcycle 列为 csrrs rd, cycle, x0 的标准计数器读取写法。
rdcycle 读取 cycle 的低 XLEN 位。
可用性与扩展条件
基础条件
- Zicntr 依赖 Zicsr
- 读取 cycle 的低 XLEN 位
单指令/标准写法条件
- 执行环境允许计数器访问
回退/边界
某些执行环境可能禁止计数器访问;RV32 的完整读取采用高、低、高比较重试。备注
- cycle 的速率取决于实现和执行环境。
展开过程怎么理解
步骤 1
CSRRS 以 rs1=x0 读取只读 cycle CSR;该 canonical form 不写入 CSR。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
什么时候优先想到它
按 ISA 的性能监测用途读取执行处理器核心时钟周期数
容易混淆 / 常见误区
Zicntr 依赖 Zicsr;某些执行环境可能禁止访问计数器。
XLEN=32 时 rdcycle 只读低 32 位;完整 cycle 值需采用手册给出的高、低、高比较重试序列。
cycle 计数处理该 hart 所在处理器核心从过去任意时点起执行的时钟周期数;其速率取决于实现和执行环境。
常见问题
rdcycle 是真实 RISC-V 指令吗?
rdcycle 是汇编器伪指令或别名,不是单独硬件 opcode。页面中的“常见真实展开”列出官方展开,真实行为由展开后的 ISA 指令决定。
使用 rdcycle 时最容易误解什么?
RV32 时 rdcycle 只读取低 32 位;高、低、高比较重试可得到有效的完整 cycle 值。