====================================================================
本文用于汇总整理Intel80386的系统架构中的基本要素,
参考文献:
- 《INTEL 80386 programmer's reference manual 1986》
本文是系列文章《Intel80386知识总结》的一部分。
===================================================================
1. 支持的内存模型
i386在设计上力图将内存的管理分为两层,底层功能的实现由系统软件负责,保证上层应用程序的设计可以与物理内存的现实隔离,这意味着在开发应用软件的过程中中可以完全不知道指令和数据在物理内存中具体是怎么存放的。最终,由系统软件暴露给应用软件的内存模型可以为以下两种:
- Flat模型:包含一个单独的4G字节的内存空间
- Segmented模型:包含16383(2^14)个隔离的线性地址空间,每个线性地址空间的大小为4G,共计64T的地址空间
2. 支持的数据类型
2.1 基本数据类型
基本数据类型三种:
数据类型 | 长度 |
byte | 8 bit |
word | 16 bit |
doubleword | 32 bit |
关于对齐:i386没有强制性的内存对齐的要求,即word不需要一定被放在偶数地址处,doubleword不一定要被放在4的倍数地址处,如下图所示:
但是从性能角度考虑,需要考虑到以下事实:如果系统使用32bit系统总线,则在内存与处理器之间真实传输的数据,每次都是内存中4的倍数地址处起始的4byte数据,获取非对齐的word或doubleword可能会造成多次访存后数据mask的多余操作,造成性能开销。
2.2 高级数据类型
数据类型 | 长度 | 定义 |
Integer | 32或16或8 bit | 有符号整数,补码编码 |
Ordinal | 32或16或8 bit | 无符号整数,所有数据都被解码为非负数 |
Near Pointer | 32 bit | 逻辑地址指针,同一段中的offset |
Far Pointer | 48 bit | 16 bit段选择符+32bit段内偏移 |
String | 0 ~ (2^32-1) bytes | 表示一组连续的byte |
Bit Field | 0~32 bit | 表示一组连续的bit,可以从任意byte的任意一个bit开始,最长32bit |
Bit String | 0 ~ (2^32-1) bytes | 表示一组连续的bit,可以从任意byte的任意一个bit开始,最长(2^32-1) bytes |
BCD(unpacked representation of decimal digit) | 1byte每1个十进制数字 | 用一个byte保存一个十进制数字,只有低四位是有效的。在做乘除法时必须保证高四位为0,在做加减法时高四位可以任意取值 |
Packed BCD | 1byte每两个十进制数字 | 一个byte的高四位和低四位分别保存一个十进制数字,表示范围为0-99,其中低四位对应十进制个位,高四位对应十进制十位 |
3. 寄存器
3.1通用寄存器
通用寄存器用于保存操作数用于算数/逻辑计算,也用于寻址,i386包含以下通用寄存器:
3.2段寄存器
在系统运行的任意时刻,程序可以直接访问6个段,这6个段就由下列6个寄存器指明。
其中CS和SS分别被称为当前代码段和当前堆栈段。同一时刻可以访问的数据段有上图所示的四个。
3.3EIP、ESP和EBP寄存器
EIP寄存器给出了当前代码段中的一个Offset,用于指明下一条执行的指令,其长度如下图所示。
ESP和EBP给出了当前堆栈段中的一个Offset,用于堆栈的实现:
- ESP给出SS段中一个Offset,用于指明栈顶
- EBP又被称为stack-frame base pointer,可用于辅助栈的实现
3.4 标志位寄存器
标志位寄存器EFLAGS,用于设置系统的状态,影响系统的行为,其结构如下图所示:
标志位寄存器中的标志位可以分为三组:状态标志位、控制标志位和系统级标志位。
3.4.1 状态标志位
状态标志位用于表示一条指令的执行状态或结果,进而影响之后指令的执行。状态标志位包括:OF、SF、ZF、AF、PF和CF六个。
3.4.2 控制标志位
控制标志位只有一个:DF。当DF=1时,所有的String指令进入auto-decrement状态,由高位向低位处理String。当DF=0时,所有的String指令进入auto-increment状态,由低位向高位处理String。
3.4.3 系统级标志位
- IF(Interrupt_Enable Flag):设置处理器对external(maskable)中断的处理是否开启,对异常或non maskable中断无效。
- NT(Nested Task):用于多任务和中断处理方面
- RF(Resume Flag):暂时屏蔽debug异常,避免一个debug异常打断一个正在处理的debug异常
- TF(Trap Flag):当TF=1时,处理器进入单步调试状态,在此状态中,处理器在每条指令结束的时候会自动产生一个异常,用于处理程序的监控
- VM(Virtual 8086 Mode):用8086兼容模式执行当前Task
3.5 内存管理寄存器
共四个:
- GDTR:Global段描述符表寄存器
- LDTR:Local段描述符表寄存器
- IDTR(Interrupt Descriptor Table Register):中断描述符表寄存器
- TR(Task Register):用于指向当前的任务描述数据结构
3.6 控制寄存器
控制寄存器包扩CR0、CR1、CR2和CR3四个,它们只能通过几个MOV指令访问,下图是它们的结构:
其中CR0用于设置一些系统的属性,这些属性都是全局有效的,而不是针对某个Task:
- EM(Emulation): 指明是否模拟协处理器的功能
- ET(Extension Type):用于指明系统中配置的协处理器的类型(80287或80387)
- MP(Math Present):用于影响WAIT指令(协调处理器与协处理器)的行为。
- PE(Protection Enable):PE=1处于保护模式,PE=0处于实模式
- PG(Paging):是否使用分页机制
- TS(Task Switched):每次切换Task的时候处理器都会设置此状态位,并且在每次解释协处理器指令的时候都会检查该状态位
CR2用于处理Page Fault,保存Fault发生的线性地址。
CR3用于保存PageDir(i386二级页表体系中的第一级页表)的基地址。
3.7 Debug寄存器
提供高级Debug功能,略。
3.8 Test寄存器
仅用于测试TLB(Translation Lookaside Buffer)的正确性,略。
4. 指令设计
i386的所有指令有许多共同点,都包含以下元素,其中只有Opcode是必须包含的,其他元素都只在部分指令中出现。
4.1 前缀
可以包含以下信息:
- 段重载信息:显示指明指令该使用哪个段寄存器
- 地址长度:在32bit/16bit两代地址间切换
- 操作数长度:在32bit/16bit操作数间切换
- Repeat:某些String指令可以针对一个String的每个元素反复执行
4.2 Opcode
指明指令要进行的操作。
4.3 寄存器Specifier
指明要操作的寄存器。
4.4 寻址模式信息
指明操作数的寻址模式。
4.5 立即操作数
可供立即使用的操作数。
分享到:
相关推荐
【Intel项目管理知识总结】 项目管理是一门涉及多个方面的学科,尤其在Intel这样的高科技公司中,高效的项目管理至关重要。本文将概述项目管理的核心概念、特点、流程和组织结构,以及项目管理过程的关键要素。 ...
### 大学计算机信息技术教程_必考点知识总结 #### 第一章:信息技术基础 本章节在历年的江苏一级考试中占据了重要的地位,大约占2-3分的比例。本章主要介绍的是信息技术的基础概念,其中特别强调了微电子技术的...
总结,英特尔的知识管理模型是一个综合性的框架,它强调知识的全生命周期管理,并且注重组织文化与技术平台的融合。对于其他企业和组织来说,理解并借鉴这一模型,有助于构建自身的知识管理系统,提高知识资产的利用...
- 英特尔案例:强调技术领先的重要性,英特尔凭借其技术实力在电子行业中占据主导地位。 - 凯创 IDS 系统案例:展示了特定技术在关键领域的不可或缺性,突显了技术知识的价值。 总结:企业要构建和保持竞争优势,...
- **知识点**:第四代微处理器包括 Intel 80386/486/586。 - **解释**:这些处理器标志着计算机性能的重大提升,引入了32位架构和支持更多的内存寻址。 - **重要性**:了解微处理器的发展历史有助于理解现代计算机...
本篇文章将详细介绍Intel HEX文件的结构与组成要素,帮助读者尤其是初学者快速掌握这一基础知识。 #### 二、Intel HEX 文件概述 Intel HEX 文件本质上是一种ASCII文本文件,其中包含了一系列的记录(record),每...
以上内容是根据文件标题、描述和部分内容提取的知识点,虽然信息零散,但是涵盖了操作系统、网络、硬件和软件的多个方面,展现了计算机基础知识的核心要素。注意,由于文件内容不完整且存在OCR扫描错误,以上总结...
5) StrongARM系列:拥有Intel的知识产权。 6) XScale系列:也是Intel的产品。 7) Cortex系列:分为A系列(高性能)、R系列(实时性)和M系列(低成本)。 ARM处理器的变量后缀表示不同的功能特性,如Thumb指令集、...
总结来说,新版Android开发教程及笔记-完整版提供了全面的知识体系,从Android系统的基础知识到实际开发技巧,内容覆盖了与Android开放手机联盟相关的联盟成员信息、开源贡献、开发历史、开发要素等多个方面,旨在...
联想的成功在于能够灵活学习并适应环境变化,这包括从合作伙伴如惠普、英特尔、微软等公司学习市场运作和管理经验,以及从竞争对手、其他行业和顾客中汲取知识。柳传志的名言“要想着打,不能蒙着打”体现了联想重视...
总结来说,吴耕博士的分享揭示了英特尔如何通过技术创新和标准化工作,引领网络转型,驱动无线大数据产业应用,尤其是在5G、物联网和边缘计算等领域,以支持新的应用场景和市场需求。这些技术进步对于提升产业效率、...
根据给定文件的信息,我们可以总结出以下几个重要的知识点: ### 1. Web.config 文件的作用与限制 **知识点**:Web.config 文件是 ASP.NET 应用程序的核心配置文件,它主要用于存储应用程序级别的配置信息。 - **...
根据给定的文件信息,我们可以提炼出与INTEL软件项目管理相关的多个关键知识点,这些知识点主要围绕软件项目管理和技术管理的实践、挑战以及平衡策略展开。以下是对这些知识点的详细阐述: ### 1. 软件项目管理的...
总结来说,Intel的品牌战略管理是其商业成功的关键要素,它通过构建强大的品牌认知,提升了产品附加值,降低了市场竞争风险,同时促进了整个产业链的健康发展。这个案例为其他高科技企业提供了宝贵的借鉴,证明了...
- **第四代微处理器**:题目中提到的第四代微处理器主要包括Intel80386、Intel80486以及Intel Pentium系列等。这一代处理器标志着计算机进入了一个新的时代,其主要特点包括: - **32位架构**:相比于早期的16位...
- **图像的基本属性**:介绍图像的基本构成要素,如像素、分辨率、颜色模型等。 - **图像读取与显示**:如何使用OpenCV读取和显示图像,包括不同格式的支持。 - **图像变换**:包括灰度转换、图像旋转、缩放和平移等...