其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
如何取得cpu的型号,频率,支持的扩展指令集等信息,cpuid介绍

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

作为软件开发者,我们面向的客户是多种多样的,他们使用的电脑也是各部相同的。但就cpu而言频率各不相同提供的扩展指令集也不相同,因此有时我在开发软件时需要了解客户cpu 有没支持mmx,有没支持3DNow,频率高不高,何种类型cpu,序列号是多少。为解决以上需要intel公司在80486以后提供了CPUID指令。通过调用该指令基本上可以取到有关cpu的绝大多数参数。CPUID在eax中设置值,在eax,ebx,ecx,edx中返回值。有点像中断功能调用。在eax中设置不同的值,在eax,ebx,ecx,edx中返回相应的信息。比如在eax中设置3,在ecx和edx中返回64位的cpu序列号,当然PIII以后的cpu才有唯一的序列号。
    试验一下,我们可以用vc6.0,新建一个空白的Win32 Console Application 添加cpp文件如下

#include <stdio.h>
#include <string.h>

void main() {
  char SerialNo[9];

    _asm {
   mov       EAX,                        0x3
   CPUID
   MOV       dword ptr [SerialNo],   EDX
   MOV       dword ptr [SerialNo+4],   ECX
   }
  SerialNo[9]=0; 

  printf("SerialNo string: %s\n", SerialNo);
}

通过如上方法通过在eax中设置不同的“功能调用号”可以取得cpu类型,各级缓存,等等。
大家可以参考cupid的相关参考手册。在这算为大家抛砖引玉。




相关文章

相关软件