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

改用汇编解决Visual Studio中__readmsr等固有函数稳定性问题

Visual Studio中使用__rdtsc/__readmsr/__writemsr固有函数导致系统稳定性问题

问题详情

使用__rdtsc、__readmsr、__writemsr等固有函数执行64位操作(如读取MSR或时间戳计数器)时,系统出现稳定性故障,包括鼠标无响应等异常情况。

已尝试的解决方案

  • 检查MSR操作的权限级别与执行上下文
  • 确保开发环境安装了最新更新
  • 查找这些固有函数的已知问题或编译器潜在漏洞

可行解决方案

改用手动编写汇编代码实现等效功能,通过rdmsr指令配合shl和or操作处理64位结果,彻底解决了稳定性问题。
代码片段:

rdmsr           ; Read MSR into EDX:EAX
shl rdx, 32     ; Shift the high 32 bits left
or rax, rdx     ; Combine the high and low parts

疑问

  • 是否有其他人在Visual Studio或其他环境中遇到类似问题?
  • 这些固有函数是否存在我忽略的已知限制或注意事项?
  • 该解决方案是否暗示系统配置或编译器存在更深层问题?

环境信息

  • 编译器:Visual Studio 2019
  • 操作系统:Windows 10 20H2版本(内部版本19042.804)
  • 硬件:AMD K10处理器

最小复现示例

unsigned __int64 AmdP0Freq() {
    unsigned __int64 msr = __readmsr(0xc0010064); // MSR address for P0 frequency
    int r = msr & 0x1f;
    __int64 hz = ((r + 0x10) * 100000000ll) / (1 << ((msr >> 6) & 0x07));
    return hz;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:43:32