【发布时间】:2011-03-08 00:33:41
【问题描述】:
经过大量互联网研究后,我在我的 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 位上完美运行。接下来我在我的 Mac 电脑上使用 GCC 4.0 尝试了这个,一定有一个错误,因为我的程序在 ComboBoxes 中显示奇怪的字符串,并且某些信号无法连接(Qt GUI)。
这是我的第一个汇编程序,希望有人能给我指点一下,谢谢!
【问题讨论】:
-
如果您使用调试器单步调试,您会看到什么情况?
-
@user363778:也许你应该时不时地接受一个答案?这是怎么做的:privat.rejbrand.se/howtoaccept.html
标签: gcc assembly g++ inline-assembly