【译】x86程序员手册38-10.2实在址模式下的软件初始化
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实在址模式下的软件初始化的更多相关文章
- 【译】x86程序员手册39-10.3切换到保护模式
10.3 Switching to Protected Mode 切换到保护模式 Setting the PE bit of the MSW in CR0 causes the 80386 to b ...
- 【译】x86程序员手册10 - 第4章系统架构
1.1.2 Part II -- Systems Programming 系统编程 This part presents those aspects of the architecture that ...
- 【译】x86程序员手册01
Intel 80386 Reference Programmer's Manual 80386程序员参考手册 Chapter 1 -- Introduction to the 80386 第1章 - ...
- 【译】x86程序员手册31- 第9章 异常和中断
Chapter 9 Exceptions and Interrupts 第9章 异常和中断 Interrupts and exceptions are special kinds of control ...
- 【译】x86程序员手册11- 4.1系统寄存器
4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...
- 【译】x86程序员手册09-第3章程序指令集
注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828 ...
- 【译】x86程序员手册03 - 2.1内存组织和分段
2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized ...
- 【译】x86程序员手册02 - 基本的程序模式
Chapter 2 -- Basic Programming Model: 基本的程序模式 Introduces the models of memory organization. Defines ...
- 【译】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 ...
随机推荐
- Chapter 20: Diagnostics
WHAT'S IN THIS CHAPTER?n Code contractsn Tracingn Event loggingn Performance monitoringWROX.COM CODE ...
- CentOS 7下修改rabbitmq打开文件数量方法
以下为使用systemd的修改方法: 1.系统层修改: 通过修改sysctl配置,提高系统的打开文件数量 vim /etc/sysctl.conf,添加: fs.file-max = 65535 ...
- ab压力测试-突破最大线程数
ab压力测试中,发现你一次最多只能启动1024个线程 默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能 ...
- 小程序-demo:快速开始
ylbtech-小程序-demo:快速开始 1.返回顶部 1.app.js //app.js App({ onLaunch: function () { // 展示本地存储能力 var logs = ...
- css3 all属性
ie不支持,谷歌火狐支持,safari9+支持,移动端高版本支持 all属性实际上是所有CSS属性的缩写,表示,所有的CSS属性都怎样怎样,但是,不包括unicode-bidi和direction这两 ...
- P4148 简单题(KDTree)
传送门 KDTree 修改权值当做插入节点,不平衡就暴力重构,询问的时候判断当前节点代表的矩形是否在询问的矩形的,是的话返回答案,相离返回0,否则的话判断当前点是否在矩形内,然后继续递归下去 //mi ...
- BZOJ 1001 [BeiJing2006]狼抓兔子 (UVA 1376 Animal Run)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 24727 Solved: 6276[Submit][ ...
- 在ios Xcode10下小白都能解决library not found for -libstdc++.6.0.9
写在前面 library not found for -libstdc++.6.0.9,今天做项目的时候碰到这个问题,解决的过程中遇到了目录路径不对的问题(不在通常的/Applications/Xco ...
- Luogu P1280 Niko的任务【线性dp】By cellur925
Nikonikoni~~ 题目传送门 这是当时学长讲dp的第一道例题,我还上去献了个丑,然鹅学长讲的方法我似董非董(??? 我当时说的怎么设计这道题的状态,但是好像说的是二维,本题数据范围均在1000 ...
- Qt对象模型之一:信号和槽
一.信号和槽机制概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种发出是没有目 ...