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. Struts 1 Struts 2

    Key Technologies Primer https://struts.apache.org/primer.html Threads With Struts 1 you were require ...

  2. 【Java报错】Message: 3 字节的 UTF-8 序列的字节 2 无效

    报错logs 2015-03-10 10:15:32,360 ERROR [qtp32195030-27] [InvokeAfterValve.java:55] - javax.xml.stream. ...

  3. bzoj 2726 任务安排

    题目大意: 机器上有N个需要处理的任务,它们构成了一个序列 把这些任务分成若干批 从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti 在每批任务开始前,机器需要启动时间S,而完成这批 ...

  4. 如何编写linux下nand flash驱动-2

    [Nand Flash引脚(Pin)的说明] 图3.Nand Flash引脚功能说明 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1.       I/O0 ~ ...

  5. [转]python的startswith()方法

    描述 Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在指定范围内检查. 语法 ...

  6. 【转】jenkins上配置robotframeworkride自动化脚本任务

    jenkins上配置robotframeworkride自动化脚本任务 编写好的自动化脚本,集成在jenkins上进行自动运行于监控,这里采用分布式构建,在一台slave上进行任务构建与自动化脚本的运 ...

  7. WEB开发框架系列教程 (一)快速创建解决方案

    执行<华东信息辅助开发工具> 程序 打开程序界面如下图 输入用户名.密码进行登录 如果暂时还没有用户名和密码,点击注册提供机器码给管理员进行注册. 管理员QQ:93346562 下图是:点 ...

  8. git合并相关问题(copy)

    [说明:资料来自http://gitbook.liuhui998.com/3_3.html] 一个Git仓库可以维护很多开发分支.现在我们来创建一个新的叫”experimental”的分支: $ gi ...

  9. 值得网页设计师&前端收藏的实用工具列表

    原文地址:http://www.uisdc.com/tool-list-web-developers# 无论你是经验丰富的前端,还是刚刚起步的设计师,这些为真正的网页设计师和开发者所准备的实用工具.在 ...

  10. MySQL 一对多查询,合并多的一方的信息

    select   c.name,  (select   group_concat(name) from student   s   where  s.class_id =c.id ) from  cl ...