是否可以在不设置分页的情况下进入长模式?
Is it possible to enter long mode without setting up paging?
我目前正在尝试进入长模式,因为它提供的功能比 16 位实模式更多。不过直到现在,我发现要做到这一点,您必须设置分页,这非常令人困惑。
有没有办法进入长模式,同时继续使用更简单的段寄存器来寻址内存?
长模式需要分页,如果不先设置4级或5级分页,则无法进入长模式。请参阅 Intel manual 的第 3A 卷第 9.8.5 节。具体来说,当启用分页设置 CR0.PG 为 1 时,转换检查是正确的,它检查是否同时设置了 CR4.PAE 和 IA32_EFER.LME,如果是,则进入 IA32-e 模式(Intel 的名称“长模式”)。
I am currently trying to enter long mode, as it offers more capabilities than 16 bit real mode.
如果您处于实模式(16 位)并且需要“更多功能”,那么在不设置页表的情况下最多只能进入保护模式(32 位),它不需要分页。 OSDev Wiki 有 a simple tutorial page on the topic 的工作代码。英特尔手册第 3A 卷第 9.8 节中也描述了该过程。
我目前正在尝试进入长模式,因为它提供的功能比 16 位实模式更多。不过直到现在,我发现要做到这一点,您必须设置分页,这非常令人困惑。
有没有办法进入长模式,同时继续使用更简单的段寄存器来寻址内存?
长模式需要分页,如果不先设置4级或5级分页,则无法进入长模式。请参阅 Intel manual 的第 3A 卷第 9.8.5 节。具体来说,当启用分页设置 CR0.PG 为 1 时,转换检查是正确的,它检查是否同时设置了 CR4.PAE 和 IA32_EFER.LME,如果是,则进入 IA32-e 模式(Intel 的名称“长模式”)。
I am currently trying to enter long mode, as it offers more capabilities than 16 bit real mode.
如果您处于实模式(16 位)并且需要“更多功能”,那么在不设置页表的情况下最多只能进入保护模式(32 位),它不需要分页。 OSDev Wiki 有 a simple tutorial page on the topic 的工作代码。英特尔手册第 3A 卷第 9.8 节中也描述了该过程。