====================================================================
本文用于汇总整理Intel80386初始化的相关信息,
参考文献:
- 《INTEL 80386 programmer's reference manual 1986》
本文是系列文章《Intel80386知识总结》的一部分。
===================================================================
1.寄存器的初始化状态
在i386收到来自RESET针脚的信号后,会将寄存器的状态进行初始化。
1.1 EAX
如果在RESET信号后,处理器收到来自BUSY针脚的信号,那么处理器将进行加电自检。加电自检的结果若没有问题,则EAX的值为0,否则为非0。若没有进行加电自检,那么EAX的值是不确定的。
1.2 DX
DX寄存器用于保存处理器的型号,对于i386第2字节(8~15位)取值为3。第一字节保存处理器的revision level。
1.3 CR0
CR0的初始化状态如下图所示。
若ET位=1,则处理器正在使用协处理器80387,否则正在使用协处理器80287或者没有协处理器。
1.4 其他寄存器
其他几个寄存器的初始化状态如下所示,不在下面列表中的寄存器状态都是不确定的:
- EFLAGS =00000002H
- IP =0000FFF0H
- CS selector =000H
- DS selector =0000H
- ES selector =0000H
- SS selector =0000H
- FS selector =0000H
- GS selector =0000H
- IDTR: base =0, limit =03FFH
上面这些寄存器状态包含的主要信息是处理器初始处于实模式、关中断状态。
2.设计实模式系统软件的初始化要点
2.1第一条指令
处理器初始完后将会执行的第一条指令位于物理地址fffffff0处。
2.2中断处理
关中断只能屏蔽Maskable中断的处理,异常和NMI还是会照常触发,处理器初始化时可以采取下列三种策略中的一种:
- 设置IDTR的LIMIT字段为0,此时若发生异常或NMI将会进行关机
- 在中断处理表中设置可能用到的中断处理函数指针
- 设置完整的中断处理表
3.切换到保护模式
设置CR0寄存器的PE位为1将把处理器切换到保护模式,初始CPL为0。在设置PE后,应当立即通过执行一条JMP指令来清空处理器的流水线。
3.1 初始化GDT
在设置完GDTR前,无法使用分段机制,GDTR必须在PE前设置。
3.2 初始化IDT
可以先设置PE在设置IDTR,也可以先设置IDTR再设置PE,但是应当保证在初始化完IDT后再开启中断。
3.3 开启分页机制
PageDir和PageTab可以在设置PE前后设置都可以。但是CR0中的PG位的设置必须在设置PE位后,或者通过一条指令,同PE位同时设置。
在设置页表时,应注意以下2点:
- 当前正在执行的页在设置PG前后应该映射到相同的物理地址
- 在设置PG后应当立即执行一条JMP指令
分享到:
相关推荐
根据提供的信息,我们可以深入探讨《Intel 80386 程序员手册》中的几个关键章节,这些章节对于理解和使用Intel 80386处理器至关重要。 ### 第一章:80386介绍 #### 1.1 手册的组织结构 这一节主要介绍了手册的...
80386处理器是Intel推出的一款32位微处理器,采用了先进的6级流水线技术,大大提高了处理速度。它的内部结构主要由六个处理部件组成: - **总线接口部件**:负责外部总线和处理器内部总线之间的通信。 - **执行部件...
根据提供的文件标题、描述、标签以及部分内容来看,文档主要涉及的是关于80386处理器在保护模式下的编程技术。由于部分内容并未给出实际的技术细节,因此本篇文章将围绕标题及描述中的关键词“保护模式下的80386及其...
根据提供的文件信息,以下是对英特尔奔腾M处理器(90纳米)以及与之配套的英特尔3100芯片组开发包相关知识点的介绍: 1. 英特尔奔腾M处理器(90纳米): 英特尔奔腾M处理器是英特尔推出的移动处理器系列之一,它...
2. 模块化设计:文档指出,该GUI系统采用了模块化的设计思想,包括图形设备初始化、消息机制、定时器、输入设备和窗口管理等核心机制模块,以及图形设备引擎模块和GUI对象模块。 3. GUI程序设计流程:设计流程展示...
在这个示例中,我们创建了一个卷积前向传播描述符,并初始化了相关的内存对象。然后,通过`dnnl_primitive_create`函数创建了一个前向传播原始对象,并通过`dnnl_primitive_execute`执行了卷积操作。 #### 4. Intel...
2. **复位电路**:用于初始化处理器,确保系统正常启动。 3. **JTAG接口电路**:遵循IEEE 1149.1标准,用于边界扫描测试和在系统编程,方便软件调试。 4. **存储器电路**:包括SRAM、DRAM或闪存等,用于存储程序和...
- **第2章:系统初始化** - 描述了如何初始化处理器,包括BIOS启动过程中的关键步骤。 - **第3章:中断和异常处理** - 讨论了中断和异常处理机制,包括硬件中断、软件中断、异常处理流程等。 - **第4章:内存管理** ...
- **复位信号**:用于初始化处理器状态,确保系统稳定启动。 #### 开始使用Nios II处理器 要开始使用Nios II处理器,首先需要熟悉其配置选项和架构细节。通过Altera提供的设计工具,用户可以轻松地创建和定制...
### Intel 80x86 Manual (Vol1):核心知识点解析 #### 一、基本架构(Basic Architecture) Intel Architecture Software Developer’s Manual Volume 1 主要涵盖了Intel x86 架构的基础部分,包括但不限于处理器...
- **启动流程**:内核初始化后,会调用初始化函数`start_kernel()`,随后进入系统初始化阶段,加载各种驱动模块,初始化网络服务、系统进程等。 #### 三、Linux内核移植 **1.3 Linux内核移植** - **准备工作**:...
1. **初始化**:首先设定EAX寄存器的值为1,这表示我们要获取基本信息。 2. **执行CPUID指令**:调用CPUID指令,获取返回值。 3. **解析返回值**:检查EBX寄存器的第26位(对于SSE2来说),如果该位置1,则表示...
4) 应用软件:如Bootloader等初始化程序。 嵌入式处理器特性: 1) 实时多任务处理能力:能够同时处理多个任务。 2) 结构可扩展:适应不同应用需求。 3) 强大的存储区保护功能:确保数据安全。 4) 低功耗设计:延长...
- **数组初始化**:可以使用花括号 `{}` 对数组进行初始化。 - **if-else 语句**:用于基于条件执行不同的代码块。 因此,正确答案为 B:21。 ### 21. 局域网的特点 **知识点:** 局域网(LAN)的特点。 - **...
这包括BIOS初始化硬件、加载引导程序、执行内核等步骤。 ##### 2. 内存管理 - **物理内存管理**: 如何分配、回收物理内存,以及如何处理内存碎片问题。 - **虚拟内存管理**: 如何将进程的逻辑地址空间映射到物理...
* X86平台是基于Intel公司制定的标准制成的兼容处理器,具有低廉的成本、良好的兼容性、极高的市场占有率以及优秀的性。 * X86平台能够满足嵌入式系统的性 能要求,同时也能够满足各方面的需求。 * 采用X86平台作为...
- **功能**:初始化打印机、发送数据等。 **知识点4:串行通信口I/O** - **BIOS中断**:如INT 14h用于串行通信。 - **功能**:配置通信参数、读写数据等。 #### 十、图形与发声系统的程序设计 **知识点1:显示...