INTEL处理器识别和CPUID指令(一) CPUID指令与状态寄存器的演变
按:本系列翻译自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指令与状态寄存器的演变相关推荐
- INTEL处理器识别和CPUID指令(二) CPUID指令
CPUID指令有两套函数,第一套函数返回处理器的基本信息,第二套函数返回处理器的扩展信息.图一总结了CPUID指令所能输出的处理器的基本信息.CPUID指令的输出完全依赖于EAX寄存器的内容,根据EA ...
- 汇编指令mrs_ARM汇编指令MRS和MSR(转)
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...
- 汇编指令msr_ARM汇编指令MRS和MSR(转)
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据. 针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器.每个位的含义如下图: 分成了4部分: 1,条件标志位 N(Negative) ...
- ARM常用重要的寄存器及指令解释 和 指令英文全称
一.常用的寄存器 r0 -r3 临时变量 用于传递参数,传递返回指,当传递参数的参数大于4个时,用栈空间.即开辟sp fp:frame pointer 记录回溯sp ip: 很少用 ,临时存 ...
- linux C语言调用Intel处理器CPUID指令的实例
在之前写的文章中,仅简单讲了一下CPUID指令,通过该指令可以获取很多和处理器相关的信息,如处理器的系列.型号.内存地址是多少位,等等.本文在Linux环境下,使用C语言内嵌汇编的手段使用CPUID指 ...
- Intel处理器CPUID指令学习
前文<Intel处理器Family.Model.Stepping等的学习>只是简单讲了CPU的标识等内容(仅针对Intel,本文也是),但其读取方法未涉及.本文就此未完事宜来了解读取的方法 ...
- Intel 64/x86_64/IA-32/x86处理器 - 通用指令(8) - 杂项指令 用户态扩展状态指令 随机数生成指令
Miscellaneous Instructions 杂项指令包括的功能有:载入有效地址,执行"误操作",以及侦测处理器标识信息等. 指令 描述 LEA 载入有效地址到目标寄存器 ...
- Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令
Bit and Byte Instructions 比特指令测试并修改操作数的某些比特位:字节指令设置字节操作数的值,用来指示EFLAGS标志寄存器的状态. 指令 描述 BT 测试比特位(将要测试的比 ...
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令
SSE Instruction Set SSE指令集大致可以分为4个功能组: 组合的与标量的单精度浮点指令 数据传输指令 算术指令 逻辑指令 比较指令 混洗shuffle指令 转换指令 64位SIMD ...
最新文章
- 2014年百度之星程序设计大赛 - 初赛(第二轮)Chess
- 一个App完成入门篇(一)-从Hello world开始
- 单机 Oracle 11g(11.2.0.4)手动打补丁PSU(11.2.0.4.8)
- node.js学习笔记14—微型社交网站
- linux io测试陈旭,陈旭方案论证及器件选择.doc
- 带有Spring Cloud Microservices的JSON Web令牌
- java学习(133):泛型
- [原]VS2012入门图文教程——第一个程序Hello World
- oracle参数错误,解决oracle参数系统文件出错
- I have nothing 中文歌词 歌词
- 在Ubuntu上安装D-link DWA-131驱动
- 外贸单证管理系统如何解决企业制单问题
- 计算机培训作业评价,信息化教学培训心得体会范例【三篇】
- 10015---SpringMVC--自定义视图
- 软件测试周刊(第01期):古德哈特定律
- 基于模板替换的word文档自动生成
- 测试war包(免费)
- 【linux命令】df和du的区别、文件系统
- 半年内第二块国产全功能GPU,附带首个游戏显卡!摩尔线程造芯神速,张建中“黄”气逼人...
- 手机电源键关不了屏幕_手机死机关不了机怎么办
热门文章
- Fortran 编译提示 Error:This USE statement is not positioned correctly within the scoping unit.
- nginx配置简单文件预览
- 20171031上海新国际博览中心物流展
- linux启动盘 initrd,Linux 初始 RAM 磁盘(initrd)概述
- 【lua学习】1.源码组织
- 在办公室装警报、参加杨超越编程大赛——“开发者之友”声网Agora团队是怎样炼成的?...
- Django框架设置cookies与获取cookies操作详解
- 10进制和64进制互转
- vant weapp 多选上传图片_微信小程序使用Vant Weapp组件库的方法步骤
- python excel 分组统计一个时间段内的数据,如三个月内,但不限于某个时间起止,是任何三个月的长度内