2、保护模式
一直以来都只了解保护模式的基础定义,对细节和技术实现几乎没有任何认识。
所以一看到相关的东西难免觉得害怕、手足无措、无从谈起。这次我试着一步步地打牢地基,学透保护模式。
对于计算机领域,没有学不会的知识。只有没做到知识屏蔽的教程书籍,只有一口吃成胖子的贪心。
问出我学习过程中最苦恼的几个问题:
1、nasm中的section是什么?例如[SECTION .gdt]
2、nasm中的[BITS 16]有什么用?
mov ax,[0x01]和mov ax,[dx:0x01]等价吗?
两种分段方式及意义
程序分段:汇编代码中人工/编译器划分的区域,是为了更好的管理代码结构,即section xxx或segment xxx
内存分段:对于实模式下的cpu来说,分段是为了访问更大的内存空间,即xx:xx的方式;对于在OS下运行的应用程序,分段是OS规定的进程的内存布局格式
所以实际有两种不同的分段方式,它们的目的也不同
乱序执行:将指令拆分成微操作,微操作可以并行执行
cpu是如何从实模式进入保护模式的?
1、往GDT中写入描述符
2、初始化描述符表寄存器GDTR
3、执行 lgdt 命令
4、cr0设置PE位
5、加载数据段选择子
6、在保护模式下访问内存数据
几种重要的数据结构
GDT的机构、描述符的结构、寄存器GDTR的结构、cr0的结构
gdtr
48位寄存器,起始地址32位,偏移量上限16位
最大偏移量2^16,一个描述符8字节,最多存储2^16/8=8192个描述符
保护模式下不可以再使用bios中断
bios在计算机启动时需要进行硬件的检测,在对1MB字节以上的内存进行检测时,需要创建gpt,进入保护模式

浙公网安备 33010602011771号