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,进入保护模式

posted @ 2023-07-02 23:46  跳跳龙骑士  阅读(37)  评论(0)    收藏  举报