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

VS C++是否提供Aarch64架构MSR/MRS指令的intrinsic?

针对Aarch64系统寄存器的Visual Studio C++ Intrinsic支持

是的,Visual Studio的C++编译器提供了读写Aarch64系统寄存器的intrinsic,主要分为两类:

通用系统寄存器读写

  • 读操作:使用__arm_rsr系列intrinsic,例如读取CurrentEL寄存器可写为 __arm_rsr("CurrentEL")
  • 写操作:使用__arm_wsr系列intrinsic,例如写入SCTLR_EL1寄存器可写为 __arm_wsr("SCTLR_EL1", value)

这类intrinsic需要传入寄存器的字符串名称,支持多数Aarch64架构定义的系统寄存器。注意:部分寄存器的读写要求对应异常级别的权限,运行时权限不足会触发错误。

特定功能的专用intrinsic

除通用读写接口外,VS还提供了针对特定寄存器或功能的专用intrinsic,比如:

  • 线程寄存器TPIDR_EL0/TPIDRRO_EL0:__arm_read_tpidr()、__arm_write_tpidr()、__arm_read_tpidrro()
  • DAIF标志寄存器:__arm_read_daif()、__arm_write_daif()

这类intrinsic无需手动指定寄存器名,使用起来更直观。

使用注意事项

  • 仅针对Aarch64平台编译时可用,x86/x64架构下无法调用
  • 需要项目启用ARM64支持,且编译器版本不低于Visual Studio 2017
  • 系统寄存器的读写受Aarch64权限模型约束:用户态程序仅能访问少数寄存器(如TPIDR_EL0),内核态或特权级代码才能访问更多寄存器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:17:43