x86-1-32位x86 处理器编程架构
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 处理器编程架构的更多相关文章
- ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构
★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...
- 32位x86处理器架构
我们看看32 位 x86 处理器的基本架构特点.这些处理器包括了 Intel IA-32 系列中的成员和所有 32 位 AMD 处理器. 操作模式 x86 处理器有三个主要的操作模式:保护模式.实地址 ...
- 32位x86处理器编程导入——《x86汇编语言:从实模式到保护模式》读书笔记08
在说正题之前,我们先看2个概念. 1.指令集架构(ISA) ISA 的全称是 instruction set architecture,中文就是指令集架构,是指对程序员实际"可见" ...
- 【电脑常识】如何查看电脑是32位(X86)还是64位(X64),如何知道硬件是否支持64位系统
开始->运行->输入cmd确定->输入systeminfo 回车 待加载完成,就会看到如下信息(不同版本略有差异): 一.如何查看电脑是32位(X86)还是64位(X64) 方法2: ...
- 模块XXXX可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)x64(64位)版本兼容。
最近自己在编写ActiveX控件.遇到的麻烦事不少. 今天遇到了这个问题“模块XXXX可能与您正在运行的Windows版本不兼容.检查该模块是否与regsvr32.exe的x86(32位)x64(64 ...
- windows2008 x86 安装 32位oracle
1.windows 2008 升级到sp2补丁 下载地址 : http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=15278 2. ...
- 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16
一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
- 32位嵌入式微处理器(processor)一览
32位嵌入式微处理器(processor)一览 由于嵌入式系统的专用型与定制性,与全球PC市场不同,没有一种微处理器或者微处理器公司可以主导嵌入式系统.本文分析了当前市场上主流的一些32位嵌入式微处理 ...
随机推荐
- Lock锁的使用
在Java多线程中,可以使用synchronized关键字实现线程之间的同步互斥,在jdk1.5后新增的ReentrantLock类同样可达到此效果,且在使用上比synchronized更加灵活. 观 ...
- zabbix之二进制安装
#:参考官方网站 https://www.zabbix.com/documentation/4.0/manual/installation/install_from_packages/debian_u ...
- vue 第三方图标库
"font-awesome": "^4.7.0", "dependencies": { "axios": "^ ...
- 【编程思想】【设计模式】【行为模式Behavioral】中介者模式Mediator
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/mediator.py #!/usr/bin/env py ...
- 【Linux】【Commands】基础概念及常用基础命令
命令的语法通用格式: ------------------------------------------------ #COMMAND OPTIONS ARGUMENTS 发起命令:请求内核将某个二 ...
- Druid数据库连接池工具类
package cn.itcast.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSo ...
- 【C/C++】习题3-2 分子量/算法竞赛入门经典/字符串
给出一种物质的分子式,求分子量.只包含4种原子,分别为C,H,O,N. [知识点] 1.ASCII码 [阿拉伯数字]48~57 [大写字母]65~90 [小写字母]97~122 2.输入循环到n-1的 ...
- 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- pipeline 共享库
目录 一.简介 二.共享库扩展 共享库使用 共享库结构 pipeline模板 一些小问题 三.共享库例子 使用公共变量 使用共享库的src方法 使用共享库的vars方法 四.插件实现pipeline ...
- 从 CPython 源码角度看 Python 垃圾回收机制
环状双向链表 refchain 在 Python 程序中创建的任何对象都会被放到 refchain 链表中,当创建一个 Python 对象时,内部实际上创建了一些基本的数据: 上一个对象 下一个对象 ...