win32汇编-CR3寄存器和PDBR寄存器

 

CR3寄存器是x86架构中的一种控制寄存器,用于存储页目录表的物理地址(Physical Address)。

在x86架构的操作系统中,使用分页机制将虚拟地址映射到物理地址。为了实现这种映射,需要使用页表和页目录表来管理地址转换。CR3寄存器存储了页目录表的物理地址,通过改变CR3寄存器的值,可以实现不同的虚拟地址空间之间的切换。

当处理器执行访问内存的指令时,会将虚拟地址发送给内存管理单元(MMU),MMU根据当前CR3寄存器中存储的页目录表地址进行地址转换,将虚拟地址转换为物理地址,并完成内存的访问。

需要注意的是,CR3寄存器是特权级别的寄存器,只能在特权级别0(内核模式)下进行访问和修改。用户程序无法直接访问和修改CR3寄存器的值,它们只能通过特权级别0的内核代码提供的接口来间接修改CR3寄存器的值,例如在进程切换时更新CR3寄存器以切换页表。

总而言之,CR3寄存器是x86架构中的一种控制寄存器,用于存储页目录表的物理地址,通过改变CR3寄存器的值,可以实现不同虚拟地址空间之间的切换

 

CR3用于保存页目录表页面的物理地址·因此被称为PDBR·由于目录是页对齐的·所以仅高20位有效·低12位保留供更加高级的处理器使用·向CR3中装入一个新值时·低12位必须为0·从CR3中取值时·低12位被忽略

 

 

PDBR(Page Directory Base Register)是x86架构中的一种控制寄存器,用于存储页目录表的物理地址(Physical Address)。

在x86架构的操作系统中,使用分页机制将虚拟地址映射到物理地址。为了实现这种映射,需要使用页表和页目录表来管理地址转换。PDBR寄存器存储了页目录表的物理地址,通过改变PDBR寄存器的值,可以实现不同的虚拟地址空间之间的切换。

当处理器执行访问内存的指令时,会将虚拟地址发送给内存管理单元(MMU),MMU根据当前PDBR寄存器中存储的页目录表地址进行地址转换,将虚拟地址转换为物理地址,并完成内存的访问。

需要注意的是,PDBR寄存器在32位x86架构中叫做CR3(Control Register 3),在64位x86架构中叫做PDPTR(Page-Directory Pointer)。它们都是特权级别的寄存器,只能在特权级别0(内核模式)下进行访问和修改。用户程序无法直接访问和修改PDBR寄存器的值,它们只能通过特权级别0的内核代码提供的接口来间接修改PDBR寄存器的值,例如在进程切换时更新PDBR寄存器以切换页表。

总而言之,PDBR(或者CR3/PDPTR)寄存器是x86架构中的一种控制寄存器,用于存储页目录表的物理地址,通过改变PDBR寄存器的值,可以实现不同虚拟地址空间之间的切换

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(356)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-09-24 qt5--鼠标事件
2019-09-24 RFID-RC522射频
点击右上角即可分享
微信分享提示