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 存在;完整读取要高、低、高比较并在不一致时重试。