При написании нового кода для 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 code " << a << " gives " << b << std::endl;
}
return 0;
}
Это использование сборки, но я не хочу изобретать велосипед. Есть ли другой способ реализовать CPUInfo без сборки?
Ошибки компилятора:
lewis@lewis-desktop:~/Desktop/prog$ g++ -Wall CPUInfo.cpp
CPUInfo.cpp: In function ‘int main()’:
CPUInfo.cpp:10:22: error: expected ‘)’ before ‘;’ token
CPUInfo.cpp:10:23: error: expected primary-expression before ‘)’ token
CPUInfo.cpp:10:23: error: expected ‘;’ before ‘)’ token
CPUInfo.cpp:8:8: warning: unused variable ‘b’ [-Wunused-variable]
CPUInfo.cpp:12:8: error: expected ‘}’ at end of input
/proc/cpuinfo
. - person Jerry Coffin   schedule 11.01.2013