我一直在開發一個32位操作系統,我想允許程序從內核中分離出各個段。如何設置LDT?
爲此,我需要製作SS,而DS寄存器實際上指向程序堆棧和.data節。
從我的研究中我相信這是通過設置本地描述符表來完成的。
我假設這和GDT非常相似,LDT是通過lldt加載的。
但是,我沒有得到我的細分設置後,如何使用這個。誰能解釋一下?
我一直在開發一個32位操作系統,我想允許程序從內核中分離出各個段。如何設置LDT?
爲此,我需要製作SS,而DS寄存器實際上指向程序堆棧和.data節。
從我的研究中我相信這是通過設置本地描述符表來完成的。
我假設這和GDT非常相似,LDT是通過lldt加載的。
但是,我沒有得到我的細分設置後,如何使用這個。誰能解釋一下?
不,不需要設置單獨的LDT來設置用戶空間SS/CS/DS段描述符。
在中斷處理程序中只有saving registers state和using an entry for task selector in GDT(CPU需要將進程的內核空間SS鎖定以進入用戶空間的中斷)才能做到這一點。
那麼,你找不到比英特爾手冊更好的教程。真的,找到英特爾80386編程手冊(386手冊比新手寫得更短,而且寫得更好,它有你需要的主要部分)。或英特爾網站上的IA32編程手冊。它有全部您正在搜索的信息。