x86(32位)-1-32位x86 处理器编程架构

Intel 32 位处理器架构简称IA-32(Intel Architecture,32-bit)

x86是指intel的86系列的CPU统称,比如说8086就是x86里面中的一款CPU。

IA-32,X86-32是指intel的32位CPU架构。

x86系列的处理器架构是从8086发展来的,是基于8086 的,具有延续性兼容性。所以x86系列的CPU都可以和8086CPU进行类比。

1 基本执行环境:

1.1 地址空间:

32 位的处理器有32根地址线,数据线的数量是32 根或者64根。因此,它可以访问2的32次方(4GB)的内存地址空间,每次可以读写连续的4 字节或 者8 字节,这称为双字(Double Word)或者4 字(Quad Word)访问。

1.2 寄存器:

32位x86 CPU总共包含了8个通用寄存器,6个16位段寄存器,一个状态处理器EFLAGS和一个指令指针寄存器。

1.2.1 通用寄存器

在16位CPU内,有8个通用寄存器AX、BX、CX、DX、SI、DI、 BP 和SP,其中,前4个还可以拆分成两个独立的8 位寄存器来用,即 AH、AL、BH、BL、CH、CL、DH 和DL。32 位处理器 在16位处理器的基础上,扩展了这8 个通用寄存器的长度,使之达到32位。

其中这个32位相对于16位扩展的寄存器就在16位寄存器的名字上加了一个E,这个E就是Extend中文扩展的意思。

32 位通用寄存器的高16 位是不可独立使用的,但低16 位保持同16 位处理器的兼容性。在任何时候它们都可以像在16位CPU里一样使用。

32位CPU是兼容16位CPU的,所以照样可以在32 位处理器上运行16 位处理器上的软件。

1.2.2 指令指针寄存器

为了生成32 位物理地址,32 位处理器将IP寄存器扩展到了32 位,即EIP。当CPU工作在16位模式下时,依然使用16 位的IP;在32 位模式下时,使用的是全部的32 位EIP。

1.2.3 标志寄存器

在16 位处理器中,标志寄存器FLAGS 是16 位的,在32 位处理器中,扩展到了32位,低16 位和原先保持一致。

1.2.4 段寄存器

在32 位模式下,传统的段寄存器,如CS、SS、 DS、ES,保存的不再是16位段基地址,而是段的选择子,用于选择所要访问的段,因此,严格地说,它的名字叫做段选择器

除了段选择器之外,每个段寄存器还包括一个不可见部分,称为描述符高速缓存器,里面有段的基地址和段的各种属性。这部分内容程序不可访问,由处理器自动使用。

除了CS SS DE ES以外32 位处理器还增加了两个额外的段寄存器FS 和GS。

2 基本工作模式:

2.1 实模式

8086CPU只有一种工作模式,即实模式,也就是说我们前面学习8086CPU都是在实模式下进行学习的。当然,这个名称是后来才提出来的。实模式等同于8086模式。

实模式等同于8086 模式,实模式和16位保护模式通常统称16位模式。

2.2 保护模式

2.2.1 保护模式的历史

1982年的时候,Intel公司推出了80286处理器。80286第一次提出了保护模式的概念。

1985 年的80386 处理器是Intel 公司的第一款32 位产品,而且获得 了极大成功,是后续所有32 位产品的基础。

2.2.2 保护模式概述:

80386CPU,以及所有后续的32 位处理器,都兼容实模式,可以运行实 模式下的8086 程序。而且,在刚加电时,这些处理器都自动处于实模式下,此时,它相当于一个非常快速的8086 处理器。只有在进行一番设置 之后,才能运行在保护模式下。

在保护模式下,段寄存器中保存的不再是段地址,而是段选择子,真正的段地址以及有关段的信息都位于段寄存器的描述符高速缓存中。

在保护模式下,所有的32 位处理器都可以访问多达4GB 的内存,它 们可以工作在分段模型下,每个段的基地址是32 位的,段内偏移量也是 32 位的,因此,段的长度不受限制不像保护模式由于cs:ip的原因,一个段只有0000~FFFF的空间。

2.3 V86模式

virtual 86模式,字面意思就是虚拟8086模式。

在这种模式下,IA-32 处理器被模拟成多个8086 处理器并行工作。

V86 模式是保护模式的一种,可以在保护模式下执行多个8086 程序。传统上,要执行8086 程序,处理器必须工作在实模式下。在这种情况下,为 32 位保护模式写的程序就不能运行。但是,V86 模式提供了让它们在一 起同时运行的条件。

V86模式曾经很有用,因为在那个时候,8086 程序很多,而32位应用程序很少,这个过渡期是必需的。现在,这种工作模式已经基本无用了。

x86-1-32位x86 处理器编程架构的更多相关文章

  1. ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构

    ★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...

  2. 32位x86处理器架构

    我们看看32 位 x86 处理器的基本架构特点.这些处理器包括了 Intel IA-32 系列中的成员和所有 32 位 AMD 处理器. 操作模式 x86 处理器有三个主要的操作模式:保护模式.实地址 ...

  3. 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08

    在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见" ...

  4. 【电脑常识】如何查看电脑是32位(X86)还是64位(X64),如何知道硬件是否支持64位系统

    开始->运行->输入cmd确定->输入systeminfo 回车 待加载完成,就会看到如下信息(不同版本略有差异): 一.如何查看电脑是32位(X86)还是64位(X64) 方法2: ...

  5. 模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。

    最近自己在编写ActiveX控件.遇到的麻烦事不少. 今天遇到了这个问题“模块XXXX可能与您正在运行的Windows版本不兼容.检查该模块是否与regsvr32.exe的x86(32位)x64(64 ...

  6. windows2008 x86 安装 32位oracle

    1.windows 2008 升级到sp2补丁 下载地址 : http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15278 2. ...

  7. 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16

    一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...

  8. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  9. 32位嵌入式微处理器(processor)一览

    32位嵌入式微处理器(processor)一览 由于嵌入式系统的专用型与定制性,与全球PC市场不同,没有一种微处理器或者微处理器公司可以主导嵌入式系统.本文分析了当前市场上主流的一些32位嵌入式微处理 ...

随机推荐

  1. Vue API 3模板语法 ,指令

    条件# v-if# v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 truthy 值的时候被渲染. v-show# v-show 指令也是用于根据条件展示一块内容.v-show ...

  2. alert之后才执行

    如果在正常情况下,代码要在alert之后才执行,解决办法:将要执行的代码用setTimeout延迟执行即可(原因:页面未加载完毕)

  3. linux环境centos

    qhost:查看集群 投送到集群qsub -l vf=2G,p=1 work.sh -cwd -V all_section_run.sh 杀死任务 qdel  id qstat -u \* |less ...

  4. 【Word】自动化参考文献-交叉引用

    第一步:设置参考文献标号 开始-定义新编号格式中,定义参考文献式的方框编号: 这里注意不要把他原来的数字去掉 第二步:选择交叉引用 插入-交叉引用: 第三步:更新标号 如果更新标号,使用右键-更新域. ...

  5. 如何简单的理解LSTM——其实没有那么复杂(转载)

    转载地址:https://www.jianshu.com/p/4b4701beba92 1.循环神经网络 人类针对每个问题的思考,一般不会是完全的从头开始思考.正如当你阅读这篇译文的时候,你会根据已经 ...

  6. python实现skywalking的trace模块过滤和报警

    skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...

  7. 【kafka学习笔记】合理安排broker、partition、consumer数量

    broker的数量最好大于等于partition数量 一个partition最好对应一个硬盘,这样能最大限度发挥顺序写的优势. broker如果免得是多个partition,需要随机分发,顺序IO会退 ...

  8. 使用CCS10新建TMS320F28335工程并闪烁LED(流水灯)程序

    学习TMS320F28335使用Code Composer Studio 10.4.0下载和安装本文不再叙述. 1. 新建工程 1.1选择目录新建工作区 1.2打开软件界面如下图所示: 1.3选择新建 ...

  9. 为什么众多软件厂商无法提供APS高级计划排程系统?工厂目前生产计划是怎么排产的?

    一.行业现状如想了解一下目前现状,去考察一下上了ERP的企业,会发现一个有趣的现象该企业无论ERP软件搞得如何如火如荼,似乎都与生产调度人员无关. 车间里或者生产线上的生产作业计划.生产过程的调度和管 ...

  10. 删除空行(嵌套)(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...