在为 Windows 编写新代码时,我偶然发现_cpuinfo()
了 Windows API。因为我主要处理 Linux 环境 (GCC),所以我想访问 CPUInfo。
我尝试了以下方法:
#include <iostream>
int main()
{
int a, b;
for (a = 0; a < 5; a++)
{
__asm ( "mov %1, %%eax; " // a into eax
"cpuid;"
"mov %%eax, %0;" // eax into b
:"=r"(b) // output
:"r"(a) // input
:"%eax","%ebx","%ecx","%edx" // clobbered register
);
std::cout << "The CPUID level " << a << " gives EAX= " << b << '\n';
}
return 0;
}
这个使用程序集,但我不想重新发明轮子。有没有其他方法可以在不组装的情况下实现 CPUInfo?