多くのインターネット調査の後、cpuidを使用してCPUのL1キャッシュサイズを取得するために、C++プログラムに小さなアセンブラルーチンを実装しました。
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 ++)を搭載したWindows764ビットで完全に動作します。次に、GCC 4.0を使用してMacコンピューターでこれを試しましたが、プログラムがComboBoxesに奇妙な文字列を表示し、一部の信号を接続できないため、どこかにエラーがあるはずです(QtGUI)。
これは私の最初のアセンブラプログラムです。誰かが私にヒントをくれることを願っています、ありがとう!