如何使用 CPUID 指令正确获取 x86 CPU 功能? [复制]

Posted

技术标签:

【中文标题】如何使用 CPUID 指令正确获取 x86 CPU 功能? [复制]【英文标题】:How to use CPUID instruction to get x86 CPU features correctly? [duplicate] 【发布时间】:2017-09-12 04:54:37 【问题描述】:

我想写一个小程序来获取x86CPUs的特性。参考CPUID文档后,发现有2部分:

(1)EAX=1:

......
As of January 2011, the standard Intel feature flags are as follows: 
......

(2)EAX=80000001h:

......
AMD feature flags are as follows:
......

所以这意味着如果CPU供应商是GenuineIntel,我应该使用EAX=1,如果是AuthenticAMD,我应该使用EAX=80000001h来执行CPUID指令。我的理解正确吗?

【问题讨论】:

您到底想检测什么?如果它是像 SSSE3 这样的供应商中立的东西,那么您应该使用您尝试检测的功能指定的输入来执行 CPUID... 【参考方案1】:

参考AMD CPUID 和Intel CPUID 文档后,我可以了解到EAX 1 CPUID 指令的标志不同,因此需要区分它们。

【讨论】:

以上是关于如何使用 CPUID 指令正确获取 x86 CPU 功能? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么取CPU的各项信息?

在 Raspberry Pi 4B 上获取 CPU 供应商 ID,例如 x86 CPUID?

CPUID 指令

CPU和CPUID是啥关系?

如何通过 cpuid 指令识别 c/assembler 中的 cpu 品牌名称

如何获取多核,多cpu系统中指定cpu的序列号