按:本系列翻译自INTEl官方的CPUID指令文档《Intel® Processor Identification and the CPUID Instruction》,由于我自身英语水平有限,之前顶多也就在上学时翻译过一些英语短文,翻译这种对准确性要求较高的文档,错误在所难免,这次就当做是练笔吧,以后会进行修改完善。

从INTEL486(*)开始,INTEL处理器提供了一个直接的方法来检测其内部架构能否执行CPUID指令。该方法利用标志寄存器EFLAGS的第21位(最左边为第31位,最右边为第0位)进行检测。如果应用程序(原文为sofaware)能够修改这个标志位的值,则CPUID指令能够执行(如下图所示)。PUSHF、PUSHFD指令和POPF、POPFD指令用于访问EFLAGS寄存器中的状态信息。本文档后面的程序演示了如何用PUSHFD指令和POPFD指令读写EFLAGS寄存器的ID标志位(即第21位)。

*实际上 只有部分486TM处理器和后续的INTEL处理器能够执行CPUID指令。INTEL 386TM处理器的EFLAGS寄存器的第21位是不能被应用程序(原文为sofaware)修改的,并且不能执行CPUID指令。在不支持CPUID指令的处理器上执行该指令会导致一个“invalid opcode”异常。

INTEL处理器识别和CPUID指令(一) CPUID指令与状态寄存器的演变相关推荐

  1. INTEL处理器识别和CPUID指令(二) CPUID指令

    CPUID指令有两套函数,第一套函数返回处理器的基本信息,第二套函数返回处理器的扩展信息.图一总结了CPUID指令所能输出的处理器的基本信息.CPUID指令的输出完全依赖于EAX寄存器的内容,根据EA ...

  2. 汇编指令mrs_ARM汇编指令MRS和MSR(转)

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  3. 汇编指令msr_ARM汇编指令MRS和MSR(转)

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...

  4. ARM常用重要的寄存器及指令解释 和 指令英文全称

    一.常用的寄存器 r0 -r3    临时变量  用于传递参数,传递返回指,当传递参数的参数大于4个时,用栈空间.即开辟sp fp:frame pointer  记录回溯sp ip: 很少用 ,临时存 ...

  5. linux C语言调用Intel处理器CPUID指令的实例

    在之前写的文章中,仅简单讲了一下CPUID指令,通过该指令可以获取很多和处理器相关的信息,如处理器的系列.型号.内存地址是多少位,等等.本文在Linux环境下,使用C语言内嵌汇编的手段使用CPUID指 ...

  6. Intel处理器CPUID指令学习

    前文<Intel处理器Family.Model.Stepping等的学习>只是简单讲了CPU的标识等内容(仅针对Intel,本文也是),但其读取方法未涉及.本文就此未完事宜来了解读取的方法 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(8) - 杂项指令 用户态扩展状态指令 随机数生成指令

    Miscellaneous Instructions 杂项指令包括的功能有:载入有效地址,执行"误操作",以及侦测处理器标识信息等. 指令 描述 LEA 载入有效地址到目标寄存器 ...

  8. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令

    Bit and Byte Instructions 比特指令测试并修改操作数的某些比特位:字节指令设置字节操作数的值,用来指示EFLAGS标志寄存器的状态. 指令 描述 BT 测试比特位(将要测试的比 ...

  9. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令

    SSE Instruction Set SSE指令集大致可以分为4个功能组: 组合的与标量的单精度浮点指令 数据传输指令 算术指令 逻辑指令 比较指令 混洗shuffle指令 转换指令 64位SIMD ...

最新文章

  1. 2014年百度之星程序设计大赛 - 初赛(第二轮)Chess
  2. 一个App完成入门篇(一)-从Hello world开始
  3. 单机 Oracle 11g(11.2.0.4)手动打补丁PSU(11.2.0.4.8)
  4. node.js学习笔记14—微型社交网站
  5. linux io测试陈旭,陈旭方案论证及器件选择.doc
  6. 带有Spring Cloud Microservices的JSON Web令牌
  7. java学习(133):泛型
  8. [原]VS2012入门图文教程——第一个程序Hello World
  9. oracle参数错误,解决oracle参数系统文件出错
  10. I have nothing 中文歌词 歌词
  11. 在Ubuntu上安装D-link DWA-131驱动
  12. 外贸单证管理系统如何解决企业制单问题
  13. 计算机培训作业评价,信息化教学培训心得体会范例【三篇】
  14. 10015---SpringMVC--自定义视图
  15. 软件测试周刊(第01期):古德哈特定律
  16. 基于模板替换的word文档自动生成
  17. 测试war包(免费)
  18. 【linux命令】df和du的区别、文件系统
  19. 半年内第二块国产全功能GPU,附带首个游戏显卡!摩尔线程造芯神速,张建中“黄”气逼人...
  20. 手机电源键关不了屏幕_手机死机关不了机怎么办

热门文章

  1. Fortran 编译提示 Error:This USE statement is not positioned correctly within the scoping unit.
  2. nginx配置简单文件预览
  3. 20171031上海新国际博览中心物流展
  4. linux启动盘 initrd,Linux 初始 RAM 磁盘(initrd)概述
  5. 【lua学习】1.源码组织
  6. 在办公室装警报、参加杨超越编程大赛——“开发者之友”声网Agora团队是怎样炼成的?...
  7. Django框架设置cookies与获取cookies操作详解
  8. 10进制和64进制互转
  9. vant weapp 多选上传图片_微信小程序使用Vant Weapp组件库的方法步骤
  10. python excel 分组统计一个时间段内的数据,如三个月内,但不限于某个时间起止,是任何三个月的长度内