我需要检查CPUID.01:EDX[5]吗?

问题描述 投票:0回答:1

Intel手册指出需要检查CPUID.01:EDX[5]来查看RDMSR和WRMSR指令是否可用。如果使用 CPUID,我已经发现特定 MSR 的特定位(在我的例子中为 IA32_EFER.NXE)受支持,那么它是否自动意味着 RDMSR 和 WRMSR 也受支持。按理来说应该是这样,但我没看到有明确说明。

x86 intel cpuid msr
1个回答
0
投票

我认为这是一个安全的假设,MSR 存在特征位意味着

rdmsr
wrmsr
,因此这些指令的 CPUID 特征位。

我只能想象模拟的 Deathstation 9000 x86 CPU 故意存在这样的陷阱,而且它不会偶然发生。 支持 NX 的真实 CPU 也足够新,具有 MSR。 在真实的 CPU 上,您甚至可以做出像 SSE4.1 暗示 SSSE3 这样的假设,因为 Intel 编号的 SIMD 扩展已经是增量的。 (我说“编号”是为了排除像 AVX-512 VP2INTERSECT 这样的东西,它不建立在任何其他的基础上,并且实际上已经从一些具有后来的 AVX-512 功能的 CPU 中消失了。)

没有任何 MSR 的 CPU 不会为没有 MSR 的功能设置 CPUID 功能位。

© www.soinside.com 2019 - 2024. All rights reserved.