rdcycleh
RISC-V rdcycleh 伪指令详解
汇编器伪指令RISC-V rdcycleh 是读取 cycle 高半的伪指令,展开为 csrrs rd, cycleh, x0。它只在 XLEN=32 时存在,读取同一 64 位 cycle 计数器的位 63 至 32。
你写下的是
rdcycleh rd
常见真实展开
csrrs rd, cycleh, x0
这条伪指令到底在帮你省什么
RISC-V Assembly Programmer's Manual在 rdcycle[h] 行中列出 csrrs rd, cycle[h], x0 的标准计数器读取写法。
rdcycleh 仅在 XLEN=32 读取 cycle 位 63 至 32。
可用性与扩展条件
基础条件
- RV32
- Zicntr 依赖 Zicsr
单指令/标准写法条件
- cycle 的位 63 至 32
回退/边界
rdcycleh 仅在 XLEN=32 存在。备注
- 高、低、高比较重试可得到有效的 64 位 cycle 值。
展开过程怎么理解
步骤 1
CSRRS 以 rs1=x0 读取 RV32 上 cycle 的位 63 至 32;该 canonical form 不写入 CSR。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
什么时候优先想到它
在 RV32 的 cycle 高、低、高比较重试序列中读取高半
容易混淆 / 常见误区
rdcycleh 只在 XLEN=32 时存在;不要把它作为 RV64 读取形式。
单次高半读取不能得到完整的 64 位值;手册给出的安全读取示例依次读取高半、低半、高半,并在两次高半值不一致时重试。
Zicntr 依赖 Zicsr,某些执行环境可能禁止计数器访问。
常见问题
rdcycleh 是真实 RISC-V 指令吗?
rdcycleh 是汇编器伪指令或别名,不是单独硬件 opcode。页面中的“常见真实展开”列出官方展开,真实行为由展开后的 ISA 指令决定。
使用 rdcycleh 时最容易误解什么?
rdcycleh 只在 RV32 存在;完整读取要高、低、高比较并在不一致时重试。