美文网首页
GDT/LDT/段是什么

GDT/LDT/段是什么

作者: 睦Q | 来源:发表于2019-06-15 10:50 被阅读0次

    The Global Descriptor Table (GDT) is a data structure used by Intel x86-family processors starting with the 80286. 所以在arm处理器上是不需要用的。

    汇编语言里的地址都是逻辑地址,也就是,不是真正的虚拟地址,需要GDT/LDT/转换成虚拟地址才能用。为什么不直接用虚拟地址呢?再研究。

    随便反汇编一个程序,看汇编代码:

    mov    0x80495b0, %eax

    这里0x80495b0就是一个逻辑地址。其实它只是一个段的偏移量。代码底层是分段的,代码段CS, 数据段DS, 堆栈段等。所以真正的虚拟地址是段地址+偏移量。 上面这句汇编就是把DS段的偏移为0x80495b0位置的数据放入eax寄存器。

    下面来找DS段地址。本来CPU有寄存器可以放DS段的地址,可以直接拿这个寄存器的值就可以。 问题是寄存器很小,只有16位,而段地址一般是64位或32位。那么装不下。

    具体参考:https://blog.csdn.net/darmao/article/details/78981649

    相关文章

      网友评论

          本文标题:GDT/LDT/段是什么

          本文链接:https://www.haomeiwen.com/subject/atmvfctx.html