10.2 Software Initialization for Real-Address Mode  

实地址模式的软件初始化

In real-address mode a few structures must be initialized before a program can take advantage of all the features available in this mode.

在实地址模式,程序在能利用这个模式下的的所有可用特性之前,新架构必须被初始化。

10.2.1 Stack 栈

No instructions that use the stack can be used until the stack-segment register (SS) has been loaded. SS must point to an area in RAM.

在栈段寄存器(SS)被装入前,使用栈的指令都不能用。SS必须指向RAM的一块区域。

10.2.2 Interrupt Table 中断表

The initial state of the 80386 leaves interrupts disabled; however, the processor will still attempt to access the interrupt table if an exception or nonmaskable interrupt (NMI) occurs. Initialization software should take one of the following actions:

80386的初始化状态中,中断是关的;然而,如果异常或非屏中断(NMI)发生,处理器仍将试图访问中断表。初始化软件应当采取下列的动作之一:

  • Change the limit value in the IDTR to zero. This will cause a shutdown if an exception or nonmaskable interrupt occurs. (Refer to the 80386 Hardware Reference Manual to see how shutdown is signalled externally.)

修改IDTR的限长值为0。这样,当异常或非屏蔽中断的发生时,将关机。(参见80386硬件参考手册,如何使用外部信号关机。)

  • Put pointers to valid interrupt handlers in all positions of the interrupt table that might be used by exceptions or interrupts.

在中断表的所有位置都放置一个有效的中断处理程序的指针,用来处理异常或中断。

  • Change the IDTR to point to a valid interrupt table.

修改IDTR以指向一个中断表。

10.2.3 First Instructions 第一条指令

After RESET, address lines A{31-20} are automatically asserted for instruction fetches. This fact, together with the initial values of CS:IP, causes instruction execution to begin at physical address FFFFFFF0H. Near (intrasegment) forms of control transfer instructions may be used to pass control to other addresses in the upper 64K bytes of the address space. The first far (intersegment) JMP or CALL instruction causes A{31-20} to drop low, and the 80386 continues executing instructions in the lower one megabyte of physical memory. This automatic assertion of address lines A{31-20} allows systems designers to use a ROM at the high end of the address space to initialize the system.

在REST之后,地址线A{31-20}被自动使用(asserted,一般而言assert都是查看位是否为1,所以这里应该是指高12位自动变成1。)来取指令。这个事实,与CS:IP的初始化值一起,导致指令执行在物理地址FFFFFFF0H处(译注:CS此时是0,而IP为FFF0H)。近(段内)控制转移指令可以用来传递控制到地址空间的高端64K中的另一个地址。第一条远(段间)JMP或CALL指令会导致线性地址A{31-20}丢掉低端,80386继续执行指令在低端1M的物理内存中。这种地址线自动验证A{31-20}就允许系统设计者使用位于地址空间高端的部分ROM来初始化系统。

 (这部分是真的看不懂,所以基本不要相信我翻译的,大致就是说,在实地址模式下,虽然可以用32位来表示地址,但实际上地址高端部分是要被丢弃掉的,所以实际上在实地址模式下,能做的寻址就是1M以下。而本人理解的是,BIOS此时就是在这样环境下运行的,所以BIOS不能使用1M以上的地址,但具本人跟踪BIOS代码来看,BIOS代码至少有部分代码是工作在保护模式下的,只是在BIOS运行结束后又将机器重置回实地址模式了。)

【译】x86程序员手册38-10.2实在址模式下的软件初始化的更多相关文章

  1. 【译】x86程序员手册39-10.3切换到保护模式

    10.3 Switching to Protected Mode  切换到保护模式 Setting the PE bit of the MSW in CR0 causes the 80386 to b ...

  2. 【译】x86程序员手册10 - 第4章系统架构

    1.1.2 Part II -- Systems Programming 系统编程 This part presents those aspects of the architecture that ...

  3. 【译】x86程序员手册01

    Intel 80386 Reference Programmer's Manual 80386程序员参考手册 Chapter 1 -- Introduction to the 80386 第1章 - ...

  4. 【译】x86程序员手册31- 第9章 异常和中断

    Chapter 9 Exceptions and Interrupts 第9章 异常和中断 Interrupts and exceptions are special kinds of control ...

  5. 【译】x86程序员手册11- 4.1系统寄存器

    4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...

  6. 【译】x86程序员手册09-第3章程序指令集

    注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828 ...

  7. 【译】x86程序员手册03 - 2.1内存组织和分段

    2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized ...

  8. 【译】x86程序员手册02 - 基本的程序模式

    Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines ...

  9. 【译】x86程序员手册30-8.2 I/O指令

    8.2 I/O Instructions I/O指令 The I/O instructions of the 80386 provide access to the processor's I/O p ...

随机推荐

  1. flask 文件下载 文件服务器 请求参数 函数修饰符

    180M电子书 通过已经下载到pc,在上传到私有公网服务器,之后,再异地下载 以下代码,文件内容错乱 [root@bigdata-server- mydataweb]# tree . ├── mydl ...

  2. JS之RegExp对象(二)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zkn_CS_DN_2013/article/details/24243159 RegExp对象的经常 ...

  3. fscanf()函数详解【转】

    本文转载自:http://blog.csdn.net/liangxanhai/article/details/8026496 以前解析有规律的文件的时候要么用正则表达式,要么就是傻傻的自己写程序来解析 ...

  4. HDU - 4513 吉哥系列故事――完美队形II(manacher)

    1.找出一个最长的回文子串,要求中间的值最大,然后向两侧递减. 2.判断条件改为:Ma[i+Mp[i]]==Ma[i-Mp[i]]&&Ma[i-Mp[i]]<=Ma[i-Mp[i ...

  5. HTTP网络请求原理 (三) 简单模拟HTTP服务器

    HTTP实际上是基于TCP的应用层协议,它在更高的层次封装了TCP的使用细节,是网络请求操作更为易用. TCP连接是因特网上基于流的可靠连接,它为HTTP提供了一条可靠的比特传输管道. 从TCP连接一 ...

  6. 并不对劲的bzoj4199: [Noi2015]品酒大会

    传送门-> 又称普及大会. 这题没什么好说的……后缀自动机裸题……并不对劲的人太菜了,之前照着标程逐行比对才过了这道题,前几天刚刚把这题一遍写对…… 这题的输出和某两点相同后缀的长度有关,那么把 ...

  7. DIV居中显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Linux 平台下阅读源码的工具链

    原文:http://blog.jobbole.com/101322/ 前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码. 在Win ...

  9. Linux网络流量实时监控ifstat iftop命令详解(转载)

    转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858923.html ifstat 介绍 ifstat工具是个网络接口监测工具,比较简 ...

  10. bzoj 3784: 树上的路径【点分治+st表+堆】

    参考:https://www.cnblogs.com/CQzhangyu/p/7071477.html 神奇的点分治序(或者叫点剖?).就是把点分治扫过的点依次放进队列里,然后发现,对于每一棵树摊到序 ...