3

我正在开发一个 32 位操作系统,我需要能够为程序设置新的数据段/堆栈段。但是我找不到任何关于如何在保护模式下使用这些段寄存器的好信息。我真的需要能够设置一个新的堆栈段,这样我的程序就不会与内核共享同一个堆栈。

4

1 回答 1

1

在 x86 保护模式下,段寄存器指向 GDT 选择器。

1. 所以我们需要在远跳转到保护模式之前为每个段设置适当的选择器,特别是cs、ds、ss。2. 选择器的长度为 8 字节,它定义了基本、限制和访问权限。请参阅以下链接以供参考http://en.wikibooks.org/wiki/X86_Assembly/Global_Descriptor_Table , http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html , http://en.wikipedia.org/wiki/Global_Descriptor_Table。3. 如果您需要更多信息,请回复我,我可以向您展示我的简单操作系统代码,它设置正确的 GDT 并进入保护模式。

于 2013-03-28T10:24:56.717 回答