我一直在开发一个32位操作系统,我想允许程序将段与内核分开。
要做到这一点,我需要制作SS,DS寄存器实际上指向程序堆栈和.data部分。
从我的研究中我相信这是通过设置本地描述符表来完成的。
我假设这与GDT非常相似,LDT通过lldt加载。
但是,一旦设置了细分,我就不知道如何使用它。谁能解释一下?
答案 0 :(得分:1)
不,不需要设置单独的LDT来设置用户空间SS / CS / DS段描述符。
在中断处理程序和saving registers state中只能using an entry for task selector in GDT执行此操作(CPU需要将进程的内核空间SS连接到用户空间的中断)。
答案 1 :(得分:0)
嗯,你找不到比英特尔手册更好的教程。真的,找到英特尔80386编程手册(386手册更短,写的比新的更好;它有你需要的主要点)。或来自英特尔网站的IA32编程手册。它包含您要搜索的所有信息。