- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
INTEL 80386 程序员参考手册(第十章)
INTEL 80383 程序员参考手册
初始化
当RESET引脚有信号后,80386的某些寄存器被设置为预定义值。这些预定义值对于执行引导程序来说已经足够了,但是为了利用处理器的所有特性,软件必须做一些额外的初始化工作。
10.1 复位后的处理器状态
EAX的内容取决于上电自检的结果。自检由复位结束后外部声明BUSY#来决定。如果自检通过,EAX为零。非零值表示80386的某些单元出错。如果不要求自检,则EAX的值未定义。
复位后,DX包含部件标识符和版本号,如图10-1所示。DH为3,表示80386。DL包含一个唯一的代表版本等级的标识符。
控制寄存器0(CR0)中的值如图10-2所示。如果配置了(取决于上电复位后ERROR#引脚的状态)80387,CR0的ET位被置位。如果ET被复位,则说明配置了80287或者没有协处理器。对于后面的两种情况,需要在软件中做测试加以区分。
其他寄存器和标志位设置如下:
EFLAGS
IP =0000FFF0H
CS selector =000H
DS selector =0000H
ES selector =0000H
SS selector =0000H
FS selector =0000H
GS selector =0000H
IDTR:
base =0
所有没有提到的寄存器为未定义。
这些设置暗示处理器开始了实地址模式,中断被关闭。
10.2 实地址模式的软件初始化
在实地址模式下,为了获得该模式下的所有特性,一些结构必须被初始化。
10.2.1 堆栈
在堆栈段寄存器装载之前,任何使用堆栈的指令都不能执行。SS必须指向内存中的某个区域。
10.2.2 中断表
中断在80386的初始化状态为不可用状态;然而,当异常或不可屏蔽中断(NMI)发生时,处理器仍然会试图访问中断表。初始化软件应该执行一下某个动作:
把IDTR中的上限值改为零。这将导致在有异常或不可屏蔽中断发生的时候导致宕机。(如何用外部信号宕机参考80386硬件手册。)
将异常或不可屏蔽中断可能用到的中断表中的所有项指向合法的中断处理函数。
将IDTR指向合法的中断表。
10.2.3 第一条指令
上电复位后,为了取指令,地址线A{31-20}被自动置位。这样,加上CS:IP的初始值,导致指令的执行从地址FFFFFFF0开始。近程(段间)控制转移指令可以被用来访问其他上部64K字节的地址。第一个远程(段间)指令JMP或CALL导致A{31-20}被拉低,80386继续执行低位的1M物理内存中的指令。这种地址线A{31-20}的自动置位操作使得系统设计人员能够利用地址空间的末端来初始化系统。
10.3 切换到保护模式
设置CR0的MSW的PE位导致80386开始保护模式。当前特权级(CPL)开始时为零。段寄存器指向的地址和实地址模式下的线性地址相同(实地址模式下,线性地址就是物理地址)。
在设置了PE标志位之后,初始化代码必须执行JMP指令来刷新处理器的指令预取序列。80386在使用指令前要取解码指令和地址;然而,在进入保护模式后,预取的指令信息(属于实地址模式的)将不在有效。JMP强制处理器丢弃非法的指令信息。
10.4 保护模式的软件初始化
大多数保护模式需要的初始化操作可以在切换到保护模式之前或之后执行。如果在保护模式下完成,初始化过程不能使用还没有初始化的保护模式下的特性。
10.4.1 中断描述符表
IDTR可以在实地址模式或保护模式下载入。然而,在保护模式下的中断表格式不同于实地址模式。同时改表保护模式和实地址模式的中断表格式是不可能的;因此,
不可避免的,在某一时刻选择了中断表,将会是错误的格式。这时候如果有异常,则结果是不可预料的。为了避免这种不可知性,应该关闭中断,直到在保护模式下设置好了中断处理函数,并且创建了合法的IDT。
10.4.2 堆栈
SS寄存器可以在实地址模式或保护模式下载入。如果在实地址模式下载入,在转入保护模式后SS继续指向相同的线性基地址。
10.4.3 全局描述符表
在保护模式下段寄存器被改变之前,GDT寄存器必须指向合法的GDT。GDT和GDTR的初始化可以在实地址模式下完成。GDT(LDTs也是一样)要驻留在内存,因为处理器要修改描述符的访问权限比特位。
10.4.4 页表
页表和CR3中的PDBR可以在实地址模式或保护模式下进行初始化;然而,页使能(PG)比特位在进入保护模式之前不能被设置。PG可以与PE同时设置,或在玩一些时候。设置PG时,CR3中的PDBR应该已经初始化为指向一个合法页目录的物理地址。初始化过程应该采用以下方法之一来保证在使用页之前地址的一致性。
10.4.5 第一个任务
在初始化任务寄存器之前,初始化过程可以运行一段时间;然而,在第一个任务切
文档评论(0)