我需要找到CPU的架构类型。我没有访问/proc/cpuinfo的权限,因为机器正在运行syslinux。我知道有一种方法可以用内联ASM做到这一点,但是我认为我的语法是不正确的,因为我的变量iedx没有正确设置。
我正在与ASM一起苦干,绝不是一个专家。如果任何人有任何建议或能为我指明正确的方向,我将不胜感激。
static int is64Bit(void) {
int iedx = 0;
asm("mov %eax, 0x80000001");
asm("cpuid");
asm("mov %0, %%eax" : : "a" (iedx));
if ((iedx) && (1 << 29))
{
return 1;
}
return 0;
}
发布于 2009-12-17 05:41:07
您可以在这么少的几行代码中容纳多少个bug ;)
试一试
static int is64bit(void) {
int iedx = 0;
asm volatile ("movl $0x80000001, %%eax\n"
"cpuid\n"
: "=d"(iedx)
: /* No Inputs */
: "eax", "ebx", "ecx"
);
if(iedx & (1 << 29))
{
return 1;
}
return 0;
}
https://stackoverflow.com/questions/1917761
复制相似问题