博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows PAE 寻址
阅读量:4881 次
发布时间:2019-06-11

本文共 767 字,大约阅读时间需要 2 分钟。

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

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

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

21~29: 页目录表索引 

12~20: 页表索引 

0~11:   页内偏移

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

int _tmain(int argc, _TCHAR* argv[]){    char szName[20] = "HelloWorld";    printf("szName:%x\n",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:

 

转载于:https://www.cnblogs.com/lanrenxinxin/p/4733529.html

你可能感兴趣的文章
小白用shiro(1)
查看>>
微服务化之无状态化与容器化
查看>>
动态规划LeetCode174地下城游戏
查看>>
Sublime Text 报“Pylinter could not automatically determined the path to lint.py
查看>>
自动化测试用例getText()获取某一个元素的值返回null或空
查看>>
大数智能未来
查看>>
virtualenv和virtualenvwrapper 的安装和使用
查看>>
MAC sublime text 无法自动补齐标签
查看>>
NgBook留言本开发全过程(1)
查看>>
LeetCode-指针法
查看>>
Python之路,Day12 - 那就做个堡垒机吧
查看>>
linux之shell之if、while、for语句介绍
查看>>
Mysql phpStudy升级Mysql版本,流产了怎么办?
查看>>
SQLServer之数据库行锁
查看>>
OFDM仿真
查看>>
浅谈linux内核中内存分配函数
查看>>
走近SpringBoot
查看>>
python程序之profile分析
查看>>
写在读研初期
查看>>
开环增益对负反馈放大电路的影响
查看>>