zoukankan      html  css  js  c++  java
  • Windows PAE 寻址

    PAE 就是物理地址扩展。我们常规的寻址方式是之前的将虚拟地址化为10 10 12的方式来寻址页目录,页表,页偏移,但是在开始PAE之后的寻址方式发生了改变,将32位的虚拟地址转化成 2 9 9 12的方式来寻址:

    理论就不赘述了,和普通的寻址方式没有太大的差别,具体可以参考之前的文章:x86虚拟地址到物理地址的学习,主要的差别就是由二级页表衍生成三级页表。

    31~30: 页目录指针表的索引 

    21~29: 页目录表索引 

    12~20: 页表索引 

    0~11:   页内偏移

    下面以一个简单的例子来学习:

    int _tmain(int argc, _TCHAR* argv[])
    {
        char szName[20] = "HelloWorld";
        printf("szName:%x
    ",szName);
        getchar();
        return 0;
    }

     

     打印出的地址是0x12ff4c,我们接下来就在物理地址中找到我们的“Hello World”

    12 f f4c
    页目录指针表的索引          页目录表索引            页表索引                    页内偏移
                00                  0 0000 000          1 0010 1111           1111 0100 1100
                 0                         0                        12f                           f4c

    cc.exx进程的页表目录指针的物理地址是10b00200,而目标目录指针索引为0,所以就是5a8a4001,因此页目录表的物理首地址就是5a8a4000。

    而我们的页目录表索引也为0:

    页表的物理页首地址就是5a5b3000,而页表索引是0x12f 因此页表项为5a5b3000+0x12f*8:

    所以我们的物理页首地址就是5a8b7000,而页内偏移是:f4c,因此szName的物理地址为5a8b7f4c:

  • 相关阅读:
    QT 开发小记
    linux c 时间函数
    ubuntu 16.04 登录后黑屏
    ubuntu 16.04 修正网卡与ifname对应关系
    HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
    vue里面引入jq的方法
    如何禁用手机自带的输入法软键盘
    vue的首页渲染了两次的原因以及解决方法
    vue使用hightchats
    解决微信小程序使用switchTab跳转后页面不刷新的问题
  • 原文地址:https://www.cnblogs.com/lanrenxinxin/p/4733529.html
Copyright © 2011-2022 走看看