Assembly X86 64位长模式表

Assembly X86 64位长模式表,assembly,x86,x86-64,osdev,page-tables,Assembly,X86,X86 64,Osdev,Page Tables,我已成功进入32位保护模式,现在希望进入64位长模式。我理解执行此操作的代码,但不理解与32位GDT相比64位表是如何工作的。我想知道是否有一个关于这方面的教程或一个简单的方法来解释它,或者我只需要阅读AMD手册(不容易遵循)。我知道它的结构是 PML4T[0] -> PDPT. PDPT[0] -> PDT. PDT[0] -> PT. PT 但我不知道如何使用它。我假设32位模式的GDT没有在64位长模式下使用?这毫无意义。GDT和分页都以32位和64位模式存在,彼此之

我已成功进入32位保护模式,现在希望进入64位长模式。我理解执行此操作的代码,但不理解与32位GDT相比64位表是如何工作的。我想知道是否有一个关于这方面的教程或一个简单的方法来解释它,或者我只需要阅读AMD手册(不容易遵循)。我知道它的结构是

PML4T[0] -> PDPT.
PDPT[0] -> PDT.
PDT[0] -> PT.
PT 

但我不知道如何使用它。我假设32位模式的GDT没有在64位长模式下使用?

这毫无意义。GDT和分页都以32位和64位模式存在,彼此之间没有任何关系。两者都需要。我的意思是,一旦您切换到64位模式并且不想返回,32位GDT将不再使用。好的,我现在看到GDT在长模式下使用,但仅用于64位设置。假设我想设置2MB分页,代码从4MB到10MB,数据从10MB到内存的末尾。我究竟如何设置PDT表和控制寄存器?AMD手册中似乎有点混乱……请参阅osdev wiki上的相关链接。x86-64页表格式与PAE页表格式不同,但有4级深度。有关条目格式的图表,请参见。这毫无意义。GDT和分页都以32位和64位模式存在,彼此之间没有任何关系。两者都需要。我的意思是,一旦您切换到64位模式并且不想返回,32位GDT将不再使用。好的,我现在看到GDT在长模式下使用,但仅用于64位设置。假设我想设置2MB分页,代码从4MB到10MB,数据从10MB到内存的末尾。我究竟如何设置PDT表和控制寄存器?AMD手册中似乎有点混乱……请参阅osdev wiki上的相关链接。x86-64页表格式与PAE页表格式不同,但有4级深度。有关条目格式的图表,请参阅。