zhangminhua
驱动牛犊
驱动牛犊
  • 注册日期2005-04-30
  • 最后登录2005-12-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1635回复:2

高手们进来分析一下……

楼主#
更多 发布于:2005-05-06 10:41
文章:在保护模式下,段寄存器中存放着16位的段选择器(Segment Selector),这个值是不直接参与寻址的,而只是一个指向段描述表(Segment Descriptor Table)的索引。段描述表(Segment Descriptor Table)中存放着段描述符(Segment Descriptor)。段描述符中有关于段的描述,比如说:段在内存中的位置,段的大小,段的类型(是数据段还是代码段)等等。

当CPU运行在保护模式下时,内存中往往有三张段描述表:全局描述表(Global Descriptor,简称GDT),局部描述表(Local Descriptor,简称LDT),中断描述表(Interrupt Descriptor Table,简称IDT)。

前面我们提到了在保护模式下,内存中往往至少有三张表:GDT,LDT,IDT。聪明的你可能要问:这几张表都在内存的什么地方呢?


问得好。这三张表的位置是由三个寄存器记录的。这三个寄存器分别是:GDTR,LDTR,IDTR。


问题::看到上的问题 我 就想不通 为什么我们用段寄存器来作段选择子用来指向我们要的描述表了,那么我们再用GDTR,LDTR,IDTR这个三个寄存器来做什么啊??

bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-07 11:20
GDTR,LDTR,IDTR是这些表的位置,相当于基址
用段寄存器来作段选择子是在这些表中进行索引,相当于偏移
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
moonYut
驱动小牛
驱动小牛
  • 注册日期2004-03-09
  • 最后登录2006-12-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望138点
  • 贡献值17点
  • 好评度117点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-07 14:30
哎,你比我还菜,看看WIN32汇编,不管哪本都有讲这个的
刚则折,柔恒存,柔羽胜刚强! 万法自然,无根无极!--太极
游客

返回顶部