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. ORACLE dba_objects

    dba_objects OWNER 对象所有者 OBJECT_NAME 对象名称 SUBOBJECT_NAME 子对象名称 OBJECT_ID 对象id DATA_OBJECT_ID 包含该对象的se ...

  2. Function overloading and return type

    In C++ and Java, functions can not be overloaded if they differ only in the return type. For example ...

  3. 【Python】【Module】os

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curd ...

  4. JSP常见的状态码

    1.404错误 -- 找不到访问的页面或资源 a.URL输入错误: b.未部署项目. 2.500错误 -- JSP页面代码有错误 3.302状态码+200状态码 -- 重定向 4.200状态码 -- ...

  5. 【Spark】【设置】关闭INFO提示

    目的:关闭INFO提示 方法:通过修改配置文件实现 操作文件:Hadoop/conf/log4j.properties.template 操作1:复制模板文件使用 cp $SPARK_HOME/con ...

  6. C#内建接口:IEnumerable

    这节讲一下接口IEnumerable. 01 什么是Enumerable 在一些返回集合数据的接口中,我们经常能看到IEnumerable接口的身影.那什么是Enumerable呢?首先它跟C#中的e ...

  7. 图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验

    原创/朱季谦 一.HugeGraph-Hubble简介 关于HugeGraph,官方资料是这样介绍的,它是一款易用.高效.通用的开源图数据库系统(Graph Database), 实现了 Apache ...

  8. 估计工期标识(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,我们遇到的任务,工期并不是那么好定的,本来嘛,一个项目如果全靠拍脑袋,最后搞不好会被人锤脑袋-- 看来PM有风险 ...

  9. CF1057B DDoS 题解

    Content 有一个长度为 \(n\) 的数列 \(a_1,a_2,...,a_n\),求出满足 \(\sum\limits_{i=l}^r a_i>100\times(r-l+1)\) 的区 ...

  10. java 多线程 读写互斥锁ReentrantReadWriteLock:读读不互斥,读写互斥,写写互斥

    ReentrantReadWriteLock: 类ReentrantLock具有相互互斥的排他效果,也就是说,同一时间,只有一个线程执行lock()方法后面的任务.这样做虽然可以解决问题,但是效率非常 ...