Assembly 如何调用GDT?

Assembly 如何调用GDT?,assembly,memory,x86,osdev,gdt,Assembly,Memory,X86,Osdev,Gdt,我知道如何实现GDT(全局描述符表)以及段寄存器和段描述符的使用。但是,如何/何时访问GDT条目 是否在基本mov指令中访问,如 mov [eax],ebx 这是隐式调用ds段寄存器然后访问GDT段描述符,还是通过其他方式访问GDT条目;DR:在保护模式或长模式下,仅当段寄存器加载了新选择器(无论是相同值还是不同值)时,才会访问全局描述符表(GDT)或本地描述符表(LDT)。正在加载的选择器值的第2位确定将使用GDT(第2位为清除)还是LDT(第2位为设置)来确定从何处读取描述符 在16/

我知道如何实现GDT(全局描述符表)以及段寄存器和段描述符的使用。但是,如何/何时访问GDT条目

是否在基本mov指令中访问,如

mov [eax],ebx 

这是隐式调用ds段寄存器然后访问GDT段描述符,还是通过其他方式访问GDT条目;DR:在保护模式或长模式下,仅当段寄存器加载了新选择器(无论是相同值还是不同值)时,才会访问全局描述符表(GDT)或本地描述符表(LDT)。正在加载的选择器值的第2位确定将使用GDT(第2位为清除)还是LDT(第2位为设置)来确定从何处读取描述符


在16/32位保护模式或长模式下加载段寄存器(CS/DS/ES/SS/FS/GS)(无论是新值还是相同值)时,GDT(或LDT)将查询描述符条目中的信息。可将值加载到段寄存器的指令有POP、MOV、JMP(far)、CALL(far)、RET(far)。艾雷特

在实模式下,当段寄存器加载新值时,不直接参考GDT/LDT

使用选择器加载段寄存器将导致适当的特权级别和访问权限检查,以确定它在所使用的上下文中是否有效。描述符的基本、限制和访问权限将加载到与每个段寄存器关联的

段描述符缓存是CPU的一个隐藏部分,用于加速内存访问,这样就不必为每个访问内存的指令从内存中重新加载描述符信息。当您执行以下操作时:

mov [eax], ebx

CPU将EBX中的32位值写入内存地址
DS:[eax]
(其中eax包含要读取的偏移量)。除非重写,否则每个内存访问都有一个隐式段。具有内存地址的MOV指令的默认值为DS(或)。由于段寄存器中选择器所需的信息缓存在CPU中,因此当指令具有内存操作数时,不会直接查询GDT(或LDT)。

哦,对不起!我只是想说一些像mov[eax],ebx的东西