- 论坛徽章:
- 11
|
如题,在Linux下通过C内联汇编调用cpuid指令,获取处理器厂商vendor id- #include <stdio.h>
- static void native_cpuid(unsigned int *eax, unsigned int *ebx,
- unsigned int *ecx, unsigned int *edx)
- {
- /* ecx is often an input as well as an output. */
- asm volatile("cpuid"
- : "=a" (*eax),
- "=b" (*ebx),
- "=c" (*ecx),
- "=d" (*edx)
- : "0" (*eax), "2" (*ecx));
- }
- int main(int argc, char *argv[])
- {
- unsigned eax, ebx, ecx, edx;
- eax = 0; /* processor info and feature bits */
- native_cpuid(&eax, &ebx, &ecx, &edx);
- printf("%s\n", &ebx);
- printf("%s\n", &edx);
- printf("%s\n", &ecx);
- return 0;
- }
复制代码 按照intel官方文档的说法,eax=0时,ebx, edx, ecx中应该依次保存Genu,ineI,ntel
编译运行,结果为- Genu
- ineIntelGenu
- ntelGenu
复制代码 此处不解,请各位指点一下,谢谢。 |
|