//汇编语言倒是自己写过CPUID的指令获取一些CPU信息的东西。

C++编程语言的应用范围非常广泛,而且其实用方法灵活,可以帮助我们轻松的实现各种需求。在这篇文章中,我们将会为大家介绍C++获取CPU信息的一些应用技巧,让大家体验它的强大的功能。

C++获取CPU信息之获得CPU的制造商信息(Vender ID String)

把eax = 0作为输入参数,可以得到CPU的制造商信息。cpuid指令执行以后,会返回一个12字符的制造商信息,前四个字符的ASC码按低位到高位放在ebx,中间四个放在edx,最后四个字符放在ecx。比如说,对于intel的cpu,会返回一个“GenuineIntel”的字符串,返回值的存储格式为:

  1. 31 23 15 07 00
  2. EBX| u (75)| n (6E)| e (65)| G (47)
  3. EDX| I (49)| e (65)| n (6E)| i (69)
  4. ECX| l (6C)| e (65)| t (74)| n (6E)

因此可以这样实现他:

  1. string CPUID::GetVID()
  2. {
  3. char cVID[13]; // 字符串,用来存储制造商信息
  4. memset(cVID, 0, 13); // 把数组清0
  5. Executecpuid(0); // 执行cpuid指令,使用输入参数 eax = 0
  6. memcpy(cVID, &m_ebx, 4); // 复制前四个字符到数组
  7. memcpy(cVID+4, &m_edx, 4); // 复制中间四个字符到数组
  8. memcpy(cVID+8, &m_ecx, 4); // 复制最后四个字符到数组
  9. return string(cVID); // 以string的形式返回
  10. }

C++获取CPU信息之获得CPU商标信息(Brand String)

在我的电脑上点击右键,选择属性,可以在窗口的下面看到一条CPU的信息,这就是CPU的商标字符串。CPU的商标字符串也是通过cpuid得到的。由于商标的字符串很长(48个字符),所以不能在一次cpuid指令执行时全部得到,所以intel把它分成了3个操作,eax的输入参数分别是0x80000002,0x80000003,0x80000004,每次返回的16个字符,按照从低位到高位的顺序依次放在eax, ebx, ecx, edx。因此,可以用循环的方式,每次执行完以后保存结果,然后执行下一次cpuid。

  1. string CPUID::GetBrand()
  2. {
  3. const DWORD BRANDID = 0x80000002; 
    // 从0x80000002开始,到0x80000004结束
  4. char cBrand[49]; // 用来存储商标字符串,48个字符
  5. memset(cBrand, 0, 49); // 初始化为0
  6. for (DWORD i = 0; i < 3; i++) // 依次执行3个指令
  7. {
  8. Executecpuid(BRANDID + i);
  9. memcpy(cBrand + i*16, &m_eax, 16); 
    // 每次执行结束后,保存四个寄存器里的asc码到数组
  10. } // 由于在内存中,m_eax, m_ebx, m_ecx, m_edx是连续排列
  11. // 所以可以直接以内存copy的方式进行保存
  12. return string(cBrand); // 以string的形式返回
  13. }

以上就是对C++获取CPU信息相关介绍。

试试?

专注于最新测试仪器仪表(测试机)研发、生产、销售.

应用领域:线材测试、安规测试(高压测试)、变压器测试(LCR Meter)、PCB低阻测试、电源系统测试。

淘宝小店:http://shop72422917.taobao.com

有意者QQ:1482082920

C++获取CPU信息应用经验分享相关推荐

  1. linux多cpu运行python脚本,linux系统使用python获取cpu信息脚本分享

    linux系统使用python获取cpu信息脚本分享 代码如下: #!/usr/bin/env Python from __future__ import print_function from co ...

  2. android手机获取cpu信息

    前言 获取android手机的设备信息,首先要从android手机系统的所基于的linux的入手. 通过调试桥获取cpu信息 当然使用linux桌面的用户通过命令:cat /proc/cpuinfo ...

  3. 通过读取/proc/cpuinfo获取CPU信息

    1.简介 上一篇介绍了如何通过cpuid指令获取CPU信息,本文主要介绍如何通过读取/proc/cpuinfo文件获取CPU信息.本文从"什么是/proc文件系统","如 ...

  4. linux cpuid指令,通过CPUID指令获取CPU信息

    1.简介 在计算机领域中需要用到CPU信息的地方有很多.比如,在可信计算中,需要收集终端的软硬件的完整性信息,其中就包含CPU的信息:再比如,一些加密软件需要绑定CPU的某些信息,去生成加密密钥.本文 ...

  5. Intel x86_64使用cpuid指令获取CPU信息

    文章目录 前言 一.cpuid指令简介 1.1 cpuid指令功能 1.2 cpuid指令代码 二.获取处理器信息 2.1 输入参数为0H 2.2 输入参数为01H 2.3 输入参数为0x800000 ...

  6. 逆向练习001——获取CPU信息

    一直到今天才找到滴水的逆向练习 arg_0= dword ptr 8 arg_4= dword ptr 0Chpush ebp //保存当前执行函数栈栈底 mov ebp, esp //平栈,将当前函 ...

  7. arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

    由于工作的原因,要获取到ARM芯片的cpuid. 了解下存储cpu信息的寄存器内容: CPUID寄存器内容: 字段名:Implementer(venter 销售ID)|Variant(大版本号) | ...

  8. Android获取CPU信息(CPU名字和主频)

    文章参照自:http://www.2cto.com/kf/201206/134236.html 在 Android 中,我们可以通过读取一些系统文件来获得手机的 cpu信息 (CPU 名字 和CPU ...

  9. 2020年考研----吉林大学软件学院967电子信息考研经验分享

    个人简介:       X,退伍大学生,山东二本院校,计算机学院软件工程系.初试成绩:总分351分,政治 77分,数学二 89分,英语一 50分,专业课 135分(挺渣的一个分数).一个再普通不过的人 ...

最新文章

  1. C++和python先学哪个
  2. desk next the to_仁爱版七年级下册英语句型转换题型专练
  3. 如何用python画数据图-利用Python绘制数据的瀑布图的教程
  4. 使用OleDb,将Excel导入DataSet
  5. Linux常用命令——useradd,usermod
  6. 晋职称计算机过几,晋职称怎样考计算机 昨日记者采访市人事局有关负责人
  7. .NET Core 2.1 容器镜像将从 Docker Hub 中删除
  8. 马化腾定义腾讯是普通公司,这波重新定义“普通”可还行......
  9. 走近伏羲,谈5000节点集群调度与性能优化
  10. python每行输出8个式子_多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!
  11. Python 格式化输出 —— %r 与 %s 的区别(__repr__ 与 __str__)
  12. 循环控制体重C语言,减重名医王存川教授告诫:越早控制体重,肥胖导致身体的伤害越小...
  13. java程序设计精编教程第3版电子版课后答案_Java程序设计精编教程(第3版)-微课版...
  14. 一分钟搞懂NB-IoT行业发展
  15. 中图杯获奖作品计算机组,我校代表队参加首届“中图杯”全国大学生先进制图技术与技能大赛取得优异成绩...
  16. 听华应龙的课我会用计算机吗体会,听华应龙老师课有感
  17. 何恺明新作来了!更快更有效的训练FLIP
  18. BIOS实战之Memory配置
  19. c语言 乘法运算符,C 乘法运算符
  20. apache服务器安装以及使用passenger插件部署rails应用,基于ubuntu 12.04 LTS

热门文章

  1. 求1~100以内的素数,最简单的方式
  2. python连接池框架_Python中的连接池是非常重要的!神级程序员详解!
  3. 前端框架这么火,还有必要学好原生 JavaScript 吗?
  4. 三星内存编码_内存条上面的编码的含义
  5. python自动登录qq空间_python 利用splinter组件,自动登录QQ空间
  6. 计算机磁盘读取信息,VBA如何获取电脑磁盘信息,这个方法一定要知道
  7. mysql创建用户unix,MySQL,无法创建UNIX套接字(12)
  8. 一个漂亮的Bootstrap查找查询框,带下拉选择按钮
  9. python 数据内容保留最后一位_python3-数据结构和算法 -- 1.3 保留最后 N 个元素
  10. android 百叶窗动画,android 幻灯片效果之百叶窗