C++获取CPU ID

来源:互联网 发布:indesign cc 2015 mac 编辑:程序博客网 时间:2024/05/16 06:28

以前一直以为每个CPU都有唯一的CPU ID,查了一些参考资料后才知道,对于Intel的cpu,pentium III以后就不再支持唯一的cpu标识了,只可查到有厂家、型号和支持的功能等信息。

下面是用cpuid指令获取这些信息的参考资料。

闲人的这篇博文一定要看:《在C++中使用cpuid指令获得CPU信息

原文链接:http://www.cnblogs.com/freeman/archive/2005/08/30/226128.html

他帮我们封装了一个c++类,用来调用cpuid,获取相关信息。对于获取到的信息的解读,可以参考天壮的博客《cpuid的用途》

原文链接:http://fellowher.blog.163.com/blog/static/5076351520091017111313946/?fromdm&fromSearch&isFromSearchEngine=yes

和这个链接:http://siyobik.info/main/reference/instruction/CPUID

由于闲人写的类中用的汇编代码是Intel格式的,mingw只支持AT&T格式的代码,所以如果你需要用mingw编译的话还需要把其中的汇编代码改为AT&T格式,下面是改写后AT&T格式的汇编代码:

Intel格式:

 __asm
 {
  mov eax, veax
  cpuid
  mov deax, eax
  mov debx, ebx
  mov decx, ecx
  mov dedx, edx
 }

AT&T格式:

 __asm__("movl %4, %�x\n\t"
  "cpuid\n\t"
  "movl %�x, %0\n\t"
  "movl %�x, %1\n\t"
  "movl %�x, %2\n\t"
  "movl %�x, %3"
  :"=m"(deax),"=m"(debx),"=m"(decx),"=m"(dedx)  
  :"r"(veax) 
  :"�x","�x","�x","�x"
  );

关于mingw中嵌入汇编代码的语法可参考:http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

 

转自:http://blog.sina.com.cn/s/blog_4f183d960100swcp.html

原创粉丝点击