많은 인터넷 조사를 마친 후 cpuid를 사용하여 CPU의 L1 캐시 크기를 얻으려면 C++ 프로그램에서 작은 어셈블러 루틴을 구현했습니다.첫 번째 어셈블리 프로그램 (GCC 인라인 어셈블리)에서 오류가 발생했습니다.
int CPUID_getL1CacheSize() {
int l1CacheSize = -1;
asm ("mov $5, %%eax\n\t" // EAX=80000005h: L1 Cache and TLB Identifiers
"cpuid\n\t"
"mov %%eax, %0" // eax into l1CacheSize
: "=r"(l1CacheSize) // output
: // no input
: "%eax" // clobbered register
);
return l1CacheSize;
}
MinGW (GCC, G ++)가있는 Windows 7 64 비트에서 완벽하게 작동합니다. 다음으로 GCC 4.0을 사용하는 Mac 컴퓨터에서이 작업을 시도했는데 내 프로그램이 ComboBox에서 이상한 문자열을 표시하고 일부 신호를 연결할 수 없기 때문에 오류가 발생했습니다 (Qt GUI).
이것은 내 첫 번째 어셈블러 프로그램입니다. 누군가가 나에게 힌트를 줄 수 있기를 바랍니다. 감사합니다.
디버거를 사용하여 단계별로 진행하면 어떻게됩니까? –
@ user363778 : 어쩌면 당신은 매 순간마다 대답을 받아 들여야합니까? 이렇게하는 방법입니다 : http://privat.rejbrand.se/howtoaccept.html –