1.1 该手册的组织结构
该书从5个方面阐述了80386的体系结构:
第I部分 - 应用程序
第II部分 - 系统编程
第III部分 - 兼容性
第IV部分 - 指令集
附录
上面的分类一方面取决于体系结构本身,一方面取决于使用这本书的不同方式。入下表所示,后面的2部分旨在作为参考手册来帮组那些致力于在80386上开发软件的程序员。前面的3部分则是理论说明,它们说明体系结构的用途,解释术语和概念,描述那些或与专属用途相关,或与专属体系结构相关的指令。
解释说明
第I部分 - 应用程序
第II部分 - 系统编程
第III部分 - 兼容性
参考
第IV部分 - 指令集
附录
前面的3部分陈述了80386 CPU的执行模式和保护特性。应用特性和系统特性的区别由80386的保护机制决定。保护机制的主要用意在于是操作系统免于应用的干扰;因此,处理器使得一些寄存器和和指令不能被应用程序访问。第I部分讨论的是可以被应用访问的特性;第II部分讨论的特性只能由授权的系统软件或在非保护模式下访问。
80386的处理模式同样控制着可访问的特性。80386有3种处理模式:
1.保护模式。 2.实地址模式。 3.虚拟8086模式。
保护模式是80386处理器的正常的32位环境。在这种模式下,所有的指令和特性均可使用。
上电后处理器即进入实地址模式(经常简称为“实模式”)。实地址模式下,80386看起来像是一个更快速的,增加了一些新指令的8086。大多数80386软件在实地址模式下只是进行一些初始化操作。
虚拟8086模式(也常被称作“V86模式”)是一种动态模式,在这种意思上说,处理器可以频繁,快速的在V86模式和保护模式之间切换。CPU从保护模式进入V86模式去执行8086程序,然后再离开V86模式,进入保护模式继续执行原来的80386程序。
在保护模式下可使用的任何特性在V86模式下对于所有程序来说是一样的。这些特性构成了第I部分。在保护模式下系统软件可以使用的其他一些特性组成了第II部分。第III部分阐述了实地址模式和V86模式,也包括如何执行一个32位和16位的混合程序。
所有模式下可使用 第I部分-应用程序 只能在保护模式下使用 第II部分-系统编程 兼容模式 第III部分-兼容性
1.1.1 第I部分-应用编程
这部分呈现的是通常被应用程序员使用的特性。
第2章-基本编程模型:介绍了存储器的组织结构模型。定义数据类型。列举应用程序使用的寄存器集合。介绍堆栈。说明字符串操作。定义指令的组成。解释了地址计算。介绍应用程序可能用到的阿中断和异常。
第3章-应用指令集:纵览应用程序经常使用的指令。将指令按照功能分组;例如,字符串指令被分在一组,控制-传输指令被分在另一组。解释指令的概念。关于单个指令的详细介绍被放到了第IV部分,指令集参考。
1.1.2 第II部分-系统编程
这部分阐述的特性通常被下面的人使用:写操作系统,设备驱动,调试器以及为80386保护模式下应用程序提供支持的其他软件的人。
第4章-系统架构:纵览系统程序员使用的各项特性。介绍在第I部分没有提及的寄存器和数据结构。介绍面向系统的指令以及它们支持的寄存器和数据结构上下文。指出在在哪些章节可以找到寄存器,数据结构以及指令的详细信息。
第5章-内存管理:阐述了支持虚拟存储器的数据结构,寄存器以及指令的详细结构,以及段和页的概念。解释了设计者怎样选择存储器的组织模型,从完全线性(“平坦模式”)到使用页和段。
第6章-保护:展开存储器管理特性,包括它应用与断和页时的保护。说明了特权等级,堆栈切换,指针检查以及用户和超级用户模式的实现。多任务的保护被推迟到后面的章节。
第7章-多任务:阐述了硬件如何通过上下文切换和任务间保护来支持多任务。
第8章-输入/输出:揭示I/O特性,包括I/O指令,I/O的保护,以及I/O许可映射。
第9章-异常和中断:解释了80386中断的基本运行机制。中断和异常怎样和保护相联系。讨论了所有可能的异常,列举了触发条件和需要处理的信息,以及异常的恢复。
第10章-初始化:定义了处理器在复位或上电后的状态。说明了为实地址模式和保护模式设置寄存器,标志位以及数据结构。包含一个初始化示例。
第11章-协处理和多处理:解释了支持数字协处理器和共享存储器的多CPU的指令。
第12章-调试:告诉我们怎样使用调试寄存器。
1.1.3 第III部分-兼容性
本书的其他章节基本上把处理器看作是32位机器,为了简单而省略了16操作部件。确实,80386是32位机器,但是它的设计完全支持16位的操作数和寻址。这部分通过对在32位程序中支持16位程序和16位操作数的说明完整的描述了80386的结构特性。所有的3种模式均可执行16位程序:保护模式可以直接执行80286保护模式下的16位程序,实地址模式执行8086程序和80286实地址模式程序,虚拟8086模式在多任务环境下和其他80386保护模式程序一起执行8086程序。另外,32位和16位模块可以在保护模式下与32位和16位操作混合使用。
第13章-执行80286保护模式代码:在保护模式下,80386完全可以执行80286保护模式代码,因为80286是80386的子集。
第14章-80386实地址模式:说明80386的实地址模式。在这种模式下,80386看起来更像是一个快速的实地址模式下的80286,或增加了新指令的快速8086。
第15章-虚拟8086模式:80386能够快速的在保护模式和虚拟8086模式之间切换。这使其有能力在32位“本地模式”程序之间执行8086的多道程序。
第16章-混合16位和32位编码:即使在同一个程序或任务内,80386也能够混合16位和32位编码。而且,任何给定的模块可以同时使用16位和32位操作数和地址。
1.1.4 第IV部分-指令集
第I,II,III部分给出了指令和体系结构特定细节相关的总体描述,这部分用字母序列出了指令集,为汇编程序员,编写调试器,编译器,操作系统的人等提供了具体细节。指令介绍包括操作的逻辑描述,对标志位的影响,设置标志位的影响,操作数或地址长度属性的影响,处理器模式的影响以及可能产生的异常。
1.1.5 附录
附录给出了编码表和其他细节,它们被组织成了可以被汇编程序员和系统程序员快速索引的形式。