我想为应用程序实现 32 位 4Gb 平面内存映射,为此我必须获取和更新数据段描述符和代码段描述符。通过使用汇编命令"sgdt",我可以获取全局描述符表,但我不确定是 CS 还是 DS 或任何其他描述符。如果有人能帮助我处理这种困惑,将不胜感激。
我依靠 GRUB 来设置 GDT,这就是为什么我不知道它放置所有段描述符的确切位置。通过查看GDT表条目,我可以看到5个相同的代码段条目和6个相同的数据段条目,每个条目的基址设置为"0",每个条目的基址设置为"0xfffff"。你能告诉我这些重复条目的原因吗?从这些查看中,您能否确认 GRUB 已经设置了平面内存模式?
在评论部分获得好评后回答我自己的问题。GDT表包含保护模式下段描述符的条目,代码段和数据段通过代码段寄存器/数据段寄存器的读取值进行标识,其中它包含GDT表中特定段(也称为段选择器)的索引。