1。先看看是那家公司的cpu,有intel的,还有amd的和 cyrix的。全世界只有三家,实际就是两家。

先让EAX=0,再调用CPUID    
Inel的CPU将返回:    
EBX:756E6547H   'Genu '    
EDX:49656E69H   'ineI '    
ECX:6C65746EH   'ntel '    
EBX,EDX,ECX将连成“GenuineIntel”,真正的Intel。

用CPUID指令,首先你可以确定你用的CPU是Intel的。

Cyrix的CPU将返回:    
EBX:43797269H    
EDX:78496E73H    
ECX:74656164H    
“CyrixInstead”,“Cyrix来代替”。

AMD的CPU将返回:    
EBX:41757468H    
EDX:656E7469H    
ECX:63414D44H    
“AuthenticAMD ",可信的AMD。

2.   得到系列号的高32位 和是否支持有系列号。
然后执行:
MOV   EAX,01H
CPUID
如果返回的EDX中,低18位为1,那么这个CPU就是支持序列号的。
此时EAX就是序列号的高32位。这32位对同一型号的CPU是一样的。

3. 得到系列好的低64位。
再执行:
MOV   EAX,03H
CPUID
此时的EDX:ECX就是序列号的第64位。

代码如下:

#include <stdio.h>

#include <stdlib.h>
#include <string.h>
//#include <conio.h>

void main(void)
{
      unsigned char vendor_id_0[100] = "\0";
    unsigned char vendor_id_1[100] = "\0";
    unsigned char vendor_id_2[40]= "\0";
    unsigned char vendor_id_3[40]= "\0";
    unsigned char vendor_id_4[40]= "\0";
    unsigned char vendor_id_5[40]= "\0";
    unsigned char vendor_id_6[40]= "\0";
    unsigned int i_support_serial = 0;
    unsigned int i_first_serial = 0;
    unsigned int i_second_serial = 0;
    unsigned int i_third_serial = 0;
#if 1
    __asm
    (
        "movl $0,%%eax\n\t"
        "cpuid\n\t"
        "movl %%ebx,%0\n\t"
        "movl %%edx,%1\n\t"
        "movl %%ecx,%2\n\t"
        
        "movl $1,%%eax\n\t"
        "movl $0,%%edx\n\t"
        "cpuid\n\t"
        "movl %%edx,%3\n\t"
        "movl %%eax,%4\n\t"

"movl $3,%%eax\n\t"
        "cpuid\n\t"
        "movl %%edx,%5\n\t"
        "movl %%ecx,%6\n\t"

:"=m"(vendor_id_0),"=m"(vendor_id_1),"=m"(vendor_id_2),"=m"(i_support_serial),"=m"(i_first_serial),"=m"(i_second_serial),"=m"(i_third_serial)

);
printf("id = %s,%s,%s,%x,%x,%x,%x\n",vendor_id_0,vendor_id_1,vendor_id_2,i_support_serial,i_first_serial,i_second_serial,i_third_serial);
  //i_support_serial  低18位为1,那么这个CPU就是支持序列号的。
  //i_first_serial 同一型号的CPU的id号(共96位,最高的32位)
  //i_second_serial  系列号的(次高的32位)
  //i_third_serial   系列号的(底32位)

#endif
    //printf("id = %s,%s\n",vendor_id_0,vendor_id_1);
}

cpu id 系列号代码相关推荐

  1. 读取STM32F207/40x的CPU唯一ID(Unique Device ID)号方法

    在网上看到有很多的读取STM32F103系列MCU的CPU ID号,但是拿来在STM32F207上面是读取不到ID号的(按照STM32F103的地址读出来都是0XFFFFFFFF),原因是STM32F ...

  2. [源码、文档、分享] iOS/iPhone学习系列、代码教程(转)

    iOS/iPhone学习系列.代码教程----~~~持续更新中~~~ http://www.devdiv.com/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7% ...

  3. linux命令查看cpu序列号,Linux下用命令查看CPU ID以及厂家等信息

    Linux下用命令查看CPU ID // 获得CPU ID dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘ID f ...

  4. [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)

    本文转自:http://www.msproject.cn/Article/GetHardwareInformation.aspx 原文如下: -------- 在很多情况下,你可能都需要得到微机的硬件 ...

  5. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号

    C#获取电脑硬件信息(CPU ID.主板ID.硬盘ID.BIOS编号 http://www.cnblogs.com/liufei88866/archive/2010/05/11/1732671.htm ...

  6. CPU高速缓存与极性代码设计

    摘要:CPU内置少量的高速缓存的重要性不言而喻,在体积.成本.效率等因素下产生了当今用到的计算机的存储结构. 介绍 cpu缓存的结构 缓存的存取与一致 代码设计的考量 最后 CPU频率太快,其处理速度 ...

  7. JVM Java内存区域 与 内存溢出 (系列号1)

    运行时数据区域 运行时的数据区域,就是JVM管理的内存区域.JVM 运行程序的时候,管理着运行时的内存(一般以静态的 main 方法进入本类的运行时数据区,几乎所有Java程序都是从此开始,也就是说这 ...

  8. 为什么要有ID发号器、原理是什么以及如何实现?

    一.前言 上一篇文章<如何将一个长URL转换为一个短URL?>中谈到如何将长地址URL转换为短地址URL,其中谈到了一个比较理想的解决方案就是使用发号器生成一个唯一的整数ID,然后转换为6 ...

  9. 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...

    面试官:线上服务器CPU占用率高如何排查定位问题?, 国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果 ...

最新文章

  1. linux修改mysql配置文件_Linux下PHP开发环境搭建(Apache2.4+PHP7.1+MySQL5.7)
  2. excel如何在双引号里面引用变量
  3. 为myeclipse分配更大的内存
  4. Spring深入理解之ComponentScan___@ComponentScan 详解
  5. i5 1135g7什么水平_i7-10510U和i5-1135G7对比,该怎么选择呢?
  6. layui table勾选框的修改_layui表格(Table)下添加可更新拉选择框select
  7. 二十五、K8s系统强化1- 系统安全与apparmor
  8. 《版式设计——日本平面设计师参考手册》—第1章置入其他格式的文件
  9. 这6款windows办公利器,一定有一款你喜欢的!
  10. 分布式定时任务解决方案
  11. 关于中文字体的设置说明(font:12px/1.5 tahoma,arial,\5b8b\4f53)
  12. 微信公众号开发之文本回复(三)
  13. go Benchmark的运行
  14. JScript.NET或者JScript是什么?
  15. android平板能玩吃鸡吗,吃鸡不卡的安卓平板
  16. 最大实体原则_在原则实体中使用特征
  17. Qt显示PDF之四pdfium封装
  18. Koreographer音乐插件基本使用
  19. 这 10条 Linux 命令锦囊,防你牢底坐穿
  20. ctf-crypto-7+1+0

热门文章

  1. ASP.NET MVC 入门7、Hellper与数据的提交与绑定
  2. 一步步编写操作系统 48 二进制程序的加载方式
  3. java对象间的转型,详细讲述Java中的对象转型
  4. python操作hive数据库代码_Python连接Hive操作数据库
  5. python matplotlib画散点图_python matplotlib库绘制散点图例题解析
  6. Python3 基础学习笔记 C05【字典】
  7. Coursera自动驾驶课程第18讲:The Planning Problem
  8. 重读经典:《Generative Adversarial Nets》
  9. Apollo技能图谱2.0焕新发布 更新7大能力91个知识点
  10. java word转html 乱码 poi,java word转html poi