在VisualC编程中如何取得CPU的信息

供稿:hz-xin.com     日期:2025-01-17
利用利用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;
  }

MFC是什么意思?
“在直径较细的感应管中放置两对加热器,并将其控制在同一温度。当流体流动时,气体将上游的部分热量带给下游,而下游的加热器从上方获取热量温度上升。这时,利用上下加热器之间产生的温度差和流体的质量流量成比例的原理,来测定流量。”(附:qm=KCpA△T Cp定压比热容 A测量管绕组(即加热系统)与周围环境热交换系统...

“Microsoft Visual C   14.0 is required”问题解决方法_百度...
相信很多小伙伴在通过pip安装库时都会遇到标题所陈述的问题,那么怎么解决呢?下面小编就来为大家具体介绍。具体如下:1. 首先,在报错的命令行中找到Microsoft Visual C 的官方下载网址,如下图红框所圈处:2. 如果我们不小心清空了控制台,就打开浏览器搜索“Visual Studio 下载”,然后点击下图所示的...

求王国之心—记忆之链(GBA)的金手指
在《王国之心—记忆之链》这款游戏中,金手指是一种外挂工具,可以帮助玩家在GBA上获取各种优势,包括但不限于更高的经验值、无限的HP和CP,以及解锁全地图卡片和全事典。本文将详细介绍如何使用VBA(Visual Basic for Applications)代码来实现这些功能。首先,我们关注到的关键地址如下:HP 02039B52:...

如何安装opencv_contrib及解决其安装编译问题
使用visual studio生成带有opencv_contrib接口的opencv库,涉及打开OpenCV.sln、设定配置管理器为“release”、逐个编译CMakeTargets,并将未使用的模块如ximgproc去掉,确保编译无误。编译后生成的库文件如cv2.cp36-win_amd64.pyd,应放置在python安装目录下的lib\/site-packet\/cv2目录中。遇到报错时,检查...

CAD中的快捷键命令大全有哪些?
F4:数字化仪控制、F5:等轴测平面切换、F6:控制状态行上坐标的显示方式、F7:栅格显示模式控制、F8:正交模式控制、F9:栅格捕捉模式控制、F10:极轴模式控制、F11:对象追踪式控制、Alt+F8:宏、Alt+F11:打开Visual Basic编辑器、Ctrl+A:全部选择、Ctrl+B:栅格捕捉模式控制(F9)、Ctrl+C:将...

...命令把excel转换成dbf报microsoft excel 文件格式无效 如何...
如果 Visual FoxPro 不支持指定的 nCodePage 的值,会产生错误信息。也可以使用获取 nCodePage 的 GETCP() 函数来显示“代码页”对话框,并在对话框中指定一个代码页。如果省略了 AS nCodePage,而 Visual FoxPro 不能决定导入文件的代码页,Visual FoxPro 会复制导入文件的内容,而且在复制的同时把...

如何禁用VS2008的Intellisense
方法一:将Intellisense 禁用之!移除该文件:\\Microsoft Visual Studio 8\\VC\\vcpackages\\feacp.dll Intellisense 毕竟是个好东东,还好有VA可以做为替补。方法二:1.在“Tools|Macros|Macro Explorer”下打开Macro Explorer。2.点击Macros节点,选择 “New Macro Project” ,取名为“Intellisense”,...

如何用visual foxpro6.0中追其它表中的记录?
[SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage]参数FileName 指定从中读入记录的文件名。如果给出的文件名中不包含扩展名,则默认为 Visual FoxPro 表,扩展名为 .dbf 。如果是从 Visual FoxPro 表中读入记录,即使当前 SET DELETED 设置为 OFF,表中标记为删除的记录也将添加到当前表中。

使用java开发代码编辑器(使用java开发代码编辑器的好处)
\/\/取得插入或者删除后影响到的单词. \/\/例如"public"在b后插入一个空格,就变成了:"public",这时就有两个单词要处理:"pub"和"lic" \/\/这时要取得的范围是pub中p前面的位置和lic中c后面的位置 intstart=indexOfWordStart(doc,pos); intend=indexOfWordEnd(doc,pos+len); charch; while(startend){ ch=get...

microsoft visual c++ 14.0 is required 怎么解决 python
原因:安装模块时出错。1、首先打开浏览器,百度搜索“下载 twisted”,找一个安全的网站打开。2、然后在弹出来的窗口中点击选择一个适合自己python版本的下载。3、然后在弹出来的窗口中点击打开“”4、然后pip install D:\\搜狗高速下载\\Twisted-17.9.0-cp36-cp36m-win_amd64.whl install后面的内容...