关于x86-32硬件

80386这种机器是Intel32位CPU,上个世纪90年代普遍使用

80386有四种运行模式:

实模式

只有16位寻址空间,没有保护机制
为了兼容x86 16位机器(例如DOS),80386加电启动后处于实模式运行状态,在这种状态下软件可访问物理内存空间不能超过1MB,且无法发挥Intel80386以上级别的32位CPU的4GB内存管理能力

保护模式

有32位寻址空间,有保护机制
支持内存分页机制,提供了对虚拟内存的良好支持。保护模式下80386支持多任务,还支持优先级机制,不同的程序可以运行在不同的优先级上。优先级一共分为0~3 4个级别,操作系统运行在最高优先级0上,应用程序则运行在比较低的优先级上;配合良好的检查机制后,既可以在任务间实现数据的安全共享也可以很好地隔离各个任务

SMM模式

虚拟8086模式

内存架构

地址是访问内存空间的索引

80380是32位的处理器,即可以寻址物理内存为2^32=4G字节

物理内存地址空间是处理器提交到总线上用于访问计算机系统中的内存和外设的最终地址。一个计算机系统中只有一个物理地址空间。

线性地址空间(通过页模式和段模式来实现)是在操作系统的虚存管理之下每个运行的应用程序能访问的地址空间。每个运行的应用程序都认为自己独享整的计算机系统的地址空间,这样可让多个运行的应用程序之间相互隔离。

逻辑地址空间是应用程序直接使用的地址空间

段机制启动,页机制未启动:逻辑地址->段机制处理->线性地址=物理地址

段机制和页机制都启动:逻辑地址->段机制处理->线性地址->页机制处理->物理机制

箭头表示映射关系

80386的寄存器可以分为8组:

通用寄存器
EAX:累加器
EBC:基址寄存器
ECX:计数器
EDX:数据寄存器
ESI:源地址指针寄存器
EDI:目的地址指针寄存器
EBP:基址指针寄存器
ESP:堆栈指针寄存器

段寄存器
CS:代码段(实模式与保护模式里面的值代表的含义不一样)
DS:数据段
ES:附加数据段
SS:堆栈段
FS:附加段
GS:附加段

指令指针寄存器
EIP:EIP的低16位就是8086的IP,它存储的是下一条要执行的指令和内存地址,在分段地址转换中,表示指令的段内偏移地址

标志寄存器(EFLAGES)
IF(Interrupt Flag):中断允许标志位,由CLI,STL两条指令来控制;设置IF使CPU可识别外部(可屏蔽)中断请求。复位IF则禁止中断。IF对不可屏蔽外部中断和故障中断的识别没有任何作用
CF,PF,ZF,。。。

控制寄存器

系统地址寄存器,调试寄存器,测试寄存器

原文地址:https://www.cnblogs.com/AmosAlbert/p/12832187.html