经过大量互联网研究后,我在我的 C++ 程序中实现了一个小型汇编程序,以使用 cpuid 获取 CPU 的 L1 缓存大小。
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 计算机上尝试了此操作,但一定有错误,因为我的程序在 ComboBoxes 中显示奇怪的字符串,并且无法连接某些信号(Qt GUI)。
这是我的第一个汇编程序,希望有人能给我提示,谢谢!