在 Linux 上使用 cpuid 指令访问 CPU 信息
在这个问题中,开发人员试图在 Linux 环境中使用方法类似于 Windows API 中的 _cpuinfo() 函数。提供的代码尝试利用汇编指令 (cpuid) 来检索此信息,但开发人员希望避免手动汇编的需要。
解决方案在于利用编译代码时可用的 cpuid.h 头文件海湾合作委员会。该头文件声明了两个函数:
unsigned int __get_cpuid_max(unsigned int __ext, unsigned int *__sig);
int __get_cpuid(unsigned int __level, unsigned int *__eax, unsigned int *__ebx, unsigned int *__ecx, unsigned int *__edx);
__get_cpuid_max 函数返回 cpuid 指令支持的最高输入值。您可以将 __ext 指定为 0x0(表示基本信息)或 0x8000000(表示扩展信息)。
__get_cpuid 函数检索指定级别的 CPU 信息,并返回 eax、ebx、ecx 和 edx 寄存器中的数据。如果成功,则返回非零值;如果不支持请求的级别,则返回零。
用法示例:
#include
#include
int main() {
unsigned int eax, ebx, ecx, edx;
// Get maximum supported CPUID level
unsigned int max_level = __get_cpuid_max(0x0, NULL);
// Iterate over different CPUID levels
for (unsigned int level = 0; level
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3