怎样用程序取得CPU信息

原创 2001年09月09日 23:26:00

 

怎样用程序取得CPU信息 很 多 软 件 可 以 判 断所 运 行 的 电 脑 类 型 而 自 动 做 不 同 的 处 理。 如PhotoShop 5 可 以 探 测CPU 是 否 有MMX 支 持 而 调 用 不 同 的 处 理 函数,《 金 山 词 霸》 发 现 有MMX 支 持 会 产 生 半 透 明 的翻 译 提 示, 很 多 软 件 可 以 区 分Intel,Cyrix,AMD 的CPU... 现 在, 且 让 我 细 细道 来 如 何 让 你 在 自 己 的 程 序 中 取 得CPU 信 息。 主 要 可 利 用 利 用CPUID 汇 编 指 令( 机 器 码:0FH A2H, 如 果 你 的 编 译 器 不 支 持CPUID 指 令, 只 有emit 机 器 码 了) 该 指 令 可 以 被 如 下CPU 识别 Intel 486 以 上 的CPU, Cyrix M1 以 上 的CPU, AMD Am486 以 上 的CPU (1) 取CPU OEM 字 符 串, 判 断CPU 厂商 先 让EAX=0, 再 调 用CPUID Inel 的CPU 将 返 回: EBX:756E6547H 'Genu' EDX:49656E69H 'ineI' ECX:6C65746EH 'ntel' EBX,EDX,ECX 将 连 成"GenuineIntel", 真 正 的Intel。 Cyrix 的CPU 将 返 回: EBX:43797269H EDX:78496E73H ECX:74656164H "CyrixInstead","Cyrix 来 代 替"。 AMD 的CPU 将 返 回: EBX:41757468H EDX:656E7469H ECX:63414D44H "AuthenticAMD", 可 信 的AMD。 在Windows98 中, 用 右 键 单 击" 我 的 电 脑", 选 择" 属 性- 常 规" 在 计 算 机描 述 处 就 可 看 见CPU OEM 字 符 串。 (2)CPU 到 底 是 几86, 是 否 支 持MMX 先 让EAX=1, 再 调 用CPUID EAX 的 8 到11 位 就 表 明 是 几86 3 - 386 4 - i486 5 - Pentium 6 - Pentium Pro Pentium II 2 - Dual Processors EDX 的 第0 位: 有 无FPU EDX 的 第23 位:CPU 是 否 支 持IA MMX, 很 重 要 啊 ! 如 果 你 想 用 那57 条 新 增 的 指 令, 先 检查 这 一 位 吧, 否 则 就 等 着 看Windows 的" 该 程 序 执行 了 非 法 指 令, 将 被 关 闭" 吧。 (3) 专 门 检 测 是 否P6 架 构 先 让EAX=1, 再 调 用CPUID 如 果AL=1, 就 是Pentium Pro 或Pentium II (4) 专 门 检 测AMD 的CPU 信 息 先 让EAX=80000001H, 再 调 用CPUID 如 果EAX=51H, 是AMD K5 如 果EAX=66H, 是K6 K7 是 什 么 标 志, 只 有 等 大 家拿 到K7 的 芯 再 说 了。 EDX 第0 位: 是 否 有FPU( 多 余 的 !谁 用 过 没FPU 的K5,K6?) EDX 第23 位,CPU 是 否 支 持MMX, 程 序 如 下: 是C++Builder 的 控 制台 程 序, 可 以 给 出 你 的" 心" 的 信 息。 如 果 把这 个 技 术 用 于DLL 中, 便 可 以 使VB 程 序 也 知 道" 心" 的 信 息。 //--CPUID Instruction Demo Program #include #include #pragma hdrstop //---- #pragma inline #pragma argsused int main(int argc, char **argv) { char OEMString[13]; int iEAXValue,iEBXValue,iECXValue,iEDXValue; _asm { mov eax,0 cpuid mov DWORD PTR OEMString,ebx mov DWORD PTR OEMString+4,edx mov DWORD PTR OEMString+8,ecx mov BYTE PTR OEMString+12,0 } cout< < "This CPU 's OEM String is:"< < OEMString< < endl; _asm { mov eax,1 cpuid mov iEAXValue,eax mov iEBXValue,ebx mov iECXValue,ecx mov iEDXValue,edx } if(iEDXValue&0x800000) cout < < "This is MMX CPU"< < endl; else cout < < "None MMX Support."< < endl; int iCPUFamily=(0xf00 & iEAXValue) > >8; cout < < "CPU Family is:"< < iCPUFamily< < endl; _asm{ mov eax,2 CPUID } if(_AL==1) cout < < "Pentium Pro or Pentium II Found"; getch(); return 0; }

用程序取得CPU信息

很 多 软 件 可 以 判 断 所 运 行 的 电 脑 类 型 而 自 动 做 不同 的 处 理。 如PhotoShop 5 可 以 探       测CPU 是 否 有MMX 支 持 而 调 用 不...
  • nust03
  • nust03
  • 2002年06月30日 12:11
  • 988

取得 CPU Cores信息

#ifdef _WIN32 #include #elif MACOS #include #include #else #include #endif int getNumberOfCore...
  • u011640816
  • u011640816
  • 2014年06月25日 21:03
  • 345

Qt 获取CPU信息

在Qt中调用Windows API GetSystemInfo可以获取CPU的相关信息,使用Qt的界面控件显示在界面上。在实现的过程中遇到了一个问题,就是显示地址信息在界面控件上。 试了好几种方法,...
  • u011417605
  • u011417605
  • 2016年06月02日 15:57
  • 3134

c++获取cpu信息方法

PS:此文章是从本人sina博客搬移过来; 此文章好像是我之前 参照一个博客做的测试程序。是谁我找不到作者了。对此。表示对作者表示抱歉; intelIA32架构下,...
  • chenqiangdage
  • chenqiangdage
  • 2013年12月14日 23:15
  • 1317

用cpuid指令获取cpu信息

用cpuid指令获取cpu信息http://blog.163.com/madengyao_super/blog/static/285982202008625105632730/ 最近在写一个获取系统信...
  • fisher_jiang
  • fisher_jiang
  • 2009年07月14日 17:22
  • 7896

在Linux命令中使用多个CPU核心

这里有一个普遍的问题:你曾经想要统计一个非常大的列表(上百兆),或者检索文本信息,又或者一些其他无法并行运行的操作。你可能有4个核心或者更多,但是我们使用的工具却是像grep、bzip2、wc、awk...
  • u010945683
  • u010945683
  • 2015年01月13日 12:22
  • 1382

使用Visual C++编程取得CPU信息

利用利用CPUID 汇编指令(机器码:0FH A2H, 如果你的编译器不支持CPUID 指令,只有emit 机器码了), 该指令可以被如下CPU识别:   Intel 486 以上的CPU,  Cyr...
  • fxpopboy
  • fxpopboy
  • 2006年12月30日 19:10
  • 430

写程序+控制cpu占用率-4+绘制CPU使用率的正弦曲线2+C#+实现

把上一节的通过C++ 控制CPU的占用率显示正弦曲线的代码用C# 重写了一次,效果要好一点。 上一节的连接: http://blog.csdn.net/weixingstudio/article/d...
  • weixingstudio
  • weixingstudio
  • 2011年10月13日 17:07
  • 2287

WMIC查询获取本地硬件信息(主板型号,硬盘序列号,CPU参数等)

这次负责一个小模块,做一个本地服务程序获取本机的硬件信息,组装成XML文件。   语言:Java 平台:Windows 2003及以上的各版本Windows   因为在Windows系统上有...
  • kunrenzhilu
  • kunrenzhilu
  • 2014年10月31日 16:34
  • 2973

获取ios 系统 硬件信息

在获取和系统相关的硬件信息的时候,api的接口有时并不是很多。但是我的理解是iOS终究是一个操作系统,是一个基于unix的衍生系统,从操作系统的角度来理解的话,系统底层的东西是很丰富的。 内核 sy...
  • fhbystudy
  • fhbystudy
  • 2013年05月05日 21:54
  • 1391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎样用程序取得CPU信息
举报原因:
原因补充:

(最多只允许输入30个字)