阅读:1446回复:4
关于<<孙喜明VXD于设备驱动程序系列>>书中的问题
孙喜明老师书里有关于保护模式的说法:
线性地址转换为物理地址的例子 假设现有线性地址8000DD88h,我们来看一下它到底指向何处物理地址。性线地址8000DD88h应作如下解析: 800 0D D88 Page Table Index Page Index Page Offset (页面表索引) (页面索引) (页面偏移地址) 现在我们需要知道页面表目录的起始地址。于是我们查看寄存器CR3。假设寄存器CR3=891000h,那么891000h + 200h |
|
最新喜欢:![]() |
沙发#
发布于:2003-01-09 20:37
我回答你的问题。首先,与0xfffff000与是因为每个页表项的低12为用来记录此页的状态信息,比如,他是不是在内村里。有没有被读过等。你用的指令不对,你不能用d,d显示的是线性地址,你应该用peek.peek指令是直接刊物里内存的指令。页表项和页目录项的最低12位都是状态信息。
|
|
板凳#
发布于:2003-01-10 11:45
俺对孙喜明老师的页面地址的理解是这样:
800是页目录项索引,而不是地址偏移量,故应该800H×4 而孙老师是200H×4,俺个人认为是孙老师的笔误,不知对否??? 同理0Dh×4,就可以理解了,0Dh也是页面索引,不是字节地址偏移量,所以应该×4。 呵呵,俺个人的理解对否?请大侠们指点一二! |
|
地板#
发布于:2003-01-10 11:54
200h是正确的,应该用最左端的10位,如果是12位,就是800h。所以正确结果是200h。
|
|
地下室#
发布于:2003-01-10 19:31
楼上的说的不错.俺也反应过来了.对的,因为在线性地址中,目录项所对应的是10位,而孙喜明老师所用到的是12位,其时最低的2位不能用.所以按10位说,800h是1000000000 ,对应的十六进制的就是200h.
|
|