如何设置LDT?

时间:2013-01-13 01:52:13

标签: assembly x86 memory-segmentation

我一直在开发一个32位操作系统,我想允许程序将段与内核分开。

要做到这一点,我需要制作SS,DS寄存器实际上指向程序堆栈和.data部分。

从我的研究中我相信这是通过设置本地描述符表来完成的。

我假设这与GDT非常相似,LDT通过lldt加载。

但是,一旦设置了细分,我就不知道如何使用它。谁能解释一下?

2 个答案:

答案 0 :(得分:1)

不,不需要设置单独的LDT来设置用户空间SS / CS / DS段描述符。

在中断处理程序和saving registers state中只能using an entry for task selector in GDT执行此操作(CPU需要将进程的内核空间SS连接到用户空间的中断)。

答案 1 :(得分:0)

嗯,你找不到比英特尔手册更好的教程。真的,找到英特尔80386编程手册(386手册更短,写的比新的更好;它有你需要的主要点)。或来自英特尔网站的IA32编程手册。它包含您要搜索的所有信息。