wwwwwww
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2003-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1447回复:4

关于<<孙喜明VXD于设备驱动程序系列>>书中的问题

楼主#
更多 发布于:2003-01-09 20:24
孙喜明老师书里有关于保护模式的说法:
线性地址转换为物理地址的例子
假设现有线性地址8000DD88h,我们来看一下它到底指向何处物理地址。性线地址8000DD88h应作如下解析:
800
0D
D88
Page Table Index
Page Index
Page Offset
(页面表索引)
(页面索引)
(页面偏移地址)
现在我们需要知道页面表目录的起始地址。于是我们查看寄存器CR3。假设寄存器CR3=891000h,那么891000h + 200h

最新喜欢:

okincnokincn
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-09 20:37
我回答你的问题。首先,与0xfffff000与是因为每个页表项的低12为用来记录此页的状态信息,比如,他是不是在内村里。有没有被读过等。你用的指令不对,你不能用d,d显示的是线性地址,你应该用peek.peek指令是直接刊物里内存的指令。页表项和页目录项的最低12位都是状态信息。
yeammy
驱动牛犊
驱动牛犊
  • 注册日期2002-12-27
  • 最后登录2012-02-22
  • 粉丝0
  • 关注0
  • 积分63分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-10 11:45
俺对孙喜明老师的页面地址的理解是这样:
800是页目录项索引,而不是地址偏移量,故应该800H×4
而孙老师是200H×4,俺个人认为是孙老师的笔误,不知对否???
同理0Dh×4,就可以理解了,0Dh也是页面索引,不是字节地址偏移量,所以应该×4。
呵呵,俺个人的理解对否?请大侠们指点一二!
yyhabc
驱动小牛
驱动小牛
  • 注册日期2003-01-06
  • 最后登录2013-03-18
  • 粉丝0
  • 关注0
  • 积分327分
  • 威望47点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-10 11:54
200h是正确的,应该用最左端的10位,如果是12位,就是800h。所以正确结果是200h。
wwwwwww
驱动牛犊
驱动牛犊
  • 注册日期2003-01-09
  • 最后登录2003-06-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-10 19:31
楼上的说的不错.俺也反应过来了.对的,因为在线性地址中,目录项所对应的是10位,而孙喜明老师所用到的是12位,其时最低的2位不能用.所以按10位说,800h是1000000000 ,对应的十六进制的就是200h.
                  
游客

返回顶部