Podczas pisania nowego kodu dla Windows natknąłem się na _cpuinfo()
z Windows API. Ponieważ mam do czynienia głównie ze środowiskiem Linux (GCC), chcę mieć dostęp do CPUInfo.Jak wywołać "cpuid" w systemie Linux?
Próbowałem następujące:
#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;
}
Ten zespół stosowanie ale nie chcę, aby ponownie wymyślać koła. Czy istnieje inny sposób implementacji CPUInfo bez montażu?
błędy kompilatora:
[email protected]:~/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
Tak, to jest g ++, jak sądzę. A x86? Powinieneś powiedzieć. Jakie jest pytanie w każdym razie? Powiedziałeś nam, co robisz, i pokazałeś kod. Ale nie ma wątpliwości. –
@JerryCoffin Używam Linuksa (w tej sekcji Linux będzie określał procesor komputera wykonującego kod). Mam już wersję/sekcję systemu Windows przybite za pomocą funkcji _cpuinfo() z interfejsu API Win. To mój punkt. – TheBlueCat
@DavidHeffernan Zobacz mój zaktualizowany post, zaniedbałem dodanie błędów kompilatora. – TheBlueCat