1

我想为应用程序实现 32 位 4Gb 平面内存映射,为此我必须获取和更新数据段描述符和代码段描述符。通过使用汇编命令“sgdt”,我可以获得全局描述符表,但我不确定它是 CS 还是 DS 或任何其他描述符。如果有人可以帮助我解决这种困惑,将不胜感激。

我依靠 GRUB 来设置 GDT,这就是为什么我不知道它放置所有段描述符的确切位置。通过查看 GDT 表条目,我可以看到 5 个相同的代码段条目和 6 个相同的数据段条目,每个条目的基地址设置为“0”,每个设置的限制为“0xfffff”。你能告诉我这些重复条目的原因吗?从这些观察中,您能否确认 GRUB 已经设置了 Flat Memory 模式?

4

1 回答 1

1

在评论部分得到很好的回应后回答我自己的问题。GDT 表包含保护模式下的段描述符条目,代码段和数据段通过读取代码段寄存器/数据段寄存器的值来识别,其中包含 GDT 表中特定段(也称为段选择器)的索引。

于 2019-01-30T04:13:26.267 回答