免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1692 | 回复: 0
打印 上一主题 下一主题

实模式到保护模式切换时的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-20 10:15 |只看该作者 |倒序浏览
本人是个Linux内核学习的初学者,现在阅读0.11内核代码,学习保护模式的编程,有个问题想请教下高手。

在切换到保护模式前CPU工作在实模式下,此时的寻址方式是:
         
          段寄存器:偏移量

这个很好理解。主要是在实模式切换到保护模式时有点问题。如下面的代码:

         1、mov  ax #0x0001
         
         2、lmsw ax

         3、jmpi   0, 8

1、2语句将CPU从实模式切换到保护模式。我的问题是:

在执行2语句时,由于80386 CPU流水线的机制,我想此时3语句以及在译码了,在2语句执行完后执行3语句时CPU处于保护模式, 此时代码段CS寄存器的值保存的是0x9020,也即linux0.11内核中的system模块,根据保护模式的寻址方式

        LDT首地址 + CS(选为选择子) = 描述符项的地址, 描述符项保存了代码段的基地址。 此时 cs 选择子的格式是:第0-1位是定义使用权限,第2位是指示符,第3-15位是段描述符索引。

请问:CS寄存器在这期间是怎么变化的?? 一开始是0x9020, 执行语句3时是怎么变化的?

[ 本帖最后由 zly_0703 于 2009-8-20 10:18 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP