You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RISC-V核心PC值读取技术问询:ARM64能否通过CSR寄存器获取?

RISC-V PC值读取相关问题解答

标准RISC-V架构中的PC读取规则

  • 无直接返回当前PC的标准CSR:RISC-V标准架构里,不存在专门的CSR寄存器用来返回当前正在执行指令的PC值。你找到的epc类寄存器仅用于保存异常/陷阱触发时的PC,tvec是陷阱向量地址,都不属于正常执行流的当前PC。
  • 仅能通过指令读取PC到通用寄存器:标准指令集中,auipc rd, imm是最直接获取当前PC的指令(指令本身的PC值会被加载到目标寄存器rd);另外jalr指令也能间接推导PC,但auipc是专门设计的PC读取指令。

关于ARM64访问RISC-V PC的理解

你的理解是正确的:如果RISC-V核心没有将当前PC值映射到某个可被ARM64访问的CSR(包括自定义CSR),ARM64处理器无法直接读取到RISC-V的当前PC值。

替代实现建议

如果需要通过ARM64判断RISC-V是否在处理指令,或获取其PC,可考虑以下方式:

  • 自定义一个CSR寄存器,让RISC-V核心在执行流中定期将当前PC写入该CSR,ARM64通过地址映射读取这个自定义CSR即可。
  • 让RISC-V执行auipc指令将PC存入某个通用寄存器,再将该通用寄存器的地址空间映射给ARM64访问。
  • 若仅需判断是否在运行指令,可通过RISC-V的状态类CSR(如mstatus中的状态位,需结合具体实现)或硬件状态信号来判断,无需直接读取PC。

内容的提问来源于stack exchange,提问作者Chan Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:59:59