GDT&LDT

本文详细介绍了Intel系统中局部描述符表(LDT)与全局描述符表(GDT)之间的交互过程。包括如何通过LLDT指令加载LDT,并解释了LDT与GDT之间的关系及其在内存访问中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考Intel的手册:
LLDT r / m16
其中r / m16是一个segment selector,这个selector指向的是LDT所在的数据段在GDT中的位置,所以,你就必须把LDT所在的段抽象成一个segment descriptor,然后把这个descriptor放到GDT里面去。

当然,也可以换一种说法。LDT其实可以理解成是系统的一个数据段,这个数据段在加载的时候要通过GDT来索引。而GDT则不能理解成一个数据段,把它理解成是一个系统的表格,因为在加载GDT的时候,需要提供的是limit和base address。

只有第一次加载任务专署的LDT的时候,才牵扯到从GDT中读取LDT信息的过程,而LDT一旦被加载到LDTR中,那么,段寄存器中的selector中的TI标志就会直接决定从什么位置来读取内存了。

在Intel的手册Volume 3A 2.4里面写的很清楚,当通过LLDT加载了LDT后,LDT的base address、limit以及attribute会自动加载到LDTR中。一旦任务的LDT加载后,就不再和GDT有关系了。之和selector中的TI有关系了。

 

总结:

从LDT定位数据分两步进行:

1、加载LDTR(由LLDT r / m16 完成)。

2、根据段选择子从LDT中定位数据(参见段选择子介绍)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值