經過大量的網絡研究之後,我在C++程序中實現了一個小型彙編程序,以便使用cpuid獲得CPU的L1高速緩存大小。我的第一個彙編程序錯誤(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)。
這是我的第一個彙編程序,希望有人能給我一個提示,謝謝!
如果您使用調試器來瀏覽它,您會看到什麼情況? – 2010-06-24 20:49:53
@ user363778:也許你應該不時地接受答案?這是如何做到這一點:http://privat.rejbrand.se/howtoaccept.html – 2010-06-24 21:13:12