问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用C语言编写探测cpu的程序

发布网友 发布时间:2022-05-02 01:23

我来回答

2个回答

热心网友 时间:2022-06-26 04:00

参考下面的文章:

利用利用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

EDX第0 位: 是否有FPU( 多余的 !谁用过没FPU的K5,K6?)

EDX 第23 位,CPU是否支持MMX,

程序如下:

//------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;
}

最后,最好学会自己去搜索你需要的信息,
我上面的答案也是搜索来的。
关键字“C语言 CPU 信息”

热心网友 时间:2022-06-26 04:01

看看操作系统的api文档,会不会有这方面的函数调用接口?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑端视频会议好用的软件网络会议软件排名 最好用的视频会议软件推荐12款好用又免费的视频会议软件 开视频会议用什么软件比较好,哪些平台比较突出呢 2024年有哪些好用在线会议软件?2024十大网络视频会议软件介绍! GMAT考试是什么意思啊 gmat考试是什么考试 英雄对决奥特曼卡牌怎么玩 《奥特曼英雄对决》卡组多少张,卡组组成数量介绍 卡游奥特曼卡片:31种编号全称和稀有度 冻土持续多少年的冻土被称为多年冻土也叫永冻土 我的C1.0的CPU采用的是图拉丁的核心吗 cpu中c-1步进为何意思?? 3.2c 的cpu, 全速运行温度75度,正常吗? 处理器: 英特尔 C ccpu温度过高,救命啊 CCPU是什么大学?? c-60的CPU介绍 为什么电脑锁屏之后会自动弹出相片? 戴尔3046mt台式机用安装版安装win10方法?怎么改bios设置? DELL的台式机,装的win10系统,开机后显示器上显示了DELL字样就直接进入win10,没有任何提示如何进入bios? 我戴尔台式机预装win7 准备换win10系统 开机进入了u启动进行系统安装时不能复制系统文件 蔺相如和廉颇是个什么样的人 7070 Tower 台式机安装win10系统教程? 蔺相如是一个怎样得人,为什么。廉颇是一个怎样得人,为什么。赵王是一个怎样得人,为什么。 dell 灵越3670台式机,开机问题 石斛泡茶,小孩子喝了会不会啦肚子 蔺相如是一个怎样的人?廉颇又是一个怎样的人??能简单的说一下吗?? 铁皮石斛小孩能吃吗 蔺相如是一个怎样得人,为什么.廉颇是一个怎样得人,为什么.赵王是一个怎样得人,为什么. dell3967台式机装win10进不了系统 CPU C-stase通过什么调整系统? 主板z97-c cpu酷睿i5 4690配华硕gtx750ti显卡可以吗 set.什么意思中文翻译 怎么让cpu的c-status 的c0状态为100 滴露喷洒草席能杀死草席上螨虫吗? 喝大麦茶和茉莉花茶哪个好?对什么好 set 中文是什么字 You&#39;re all set中的set是什么意思 set down什么意思中文翻译 set是什么单位的意思 珊瑚虫的外形 珊瑚虫长什么样的 珊瑚虫长什么样子? 珊瑚虫是怎样繁殖的?它的身体结构是怎样的 盛开的动物鲜花——珊瑚是什么样的? 珊瑚虫和水螅的关系 长时间服用蜂王浆,到底对健康有哪些影响? 制作炸鸡应该用什么淀粉? 炸鸡排用什么裹粉最好 蜂王浆是保健品么?经常天天吃对身体好吗?