我正在尝试启动Apple的XNU内核(sources)的自定义版本。由于未处理的页面错误,引导程序正在死亡。我已将崩溃原因追溯到BootPDPT
符号。 BootPDPT
的工作是指向BootPDT
符号中的页表条目。
问题是,正如我目前理解的x86 PDPT,低16位左右是标志,地址位于高16位。 (我检查了OSDev我的研究)。这是否意味着我需要移动该地址以便妥善解决?
我问这个是因为MMU无法找到页表条目。我认为这是由于价值转移导致价值0x00102000
(BootPDT
的地址)被解释为0x00000102
。
如果我确实需要移位地址,我会将值移位多少位,如何在汇编程序中执行此操作而不会破坏低16位的标志?