作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ARM 的 aarch64 有一条 AT(地址转换)指令,该指令通过地址转换阶段运行虚拟地址,返回 PAR_EL1 中的物理地址,以及指示转换是否存在的状态。请参阅 ARMv8 ARM,第 C5.5 节。
问题是:x86_64 有等价的吗? Intel 的系统编程指南(第 3 卷第 5 章)谈到了指针验证,但这些方法似乎适用于段级保护,并且似乎没有任何页面级保护指针验证指令。
有人知道 x86_64 的类似 ARMv8-AT 的指令吗?
最佳答案
不,x86-64 指令集没有执行物理到虚拟地址转换的指令。它只有基本指令,如设置页目录寄存器、使地址无效和启用分页。
如果您想在 x86-64 上使用此功能,恐怕您需要处于主管模式才能这样做。您将读取 CR3 寄存器,可能会更改一些页表映射以访问您需要的物理地址,并通过手动遍历页目录和表来执行地址转换。
您的问题提出了一个问题作为回应:您需要了解虚拟到物理地址转换的目的是什么?分页应该对应用程序是透明的,很少有充分的理由知道特定虚拟内存地址对应的物理内存地址。
关于x86-64 - x86_64 是否与指令中的 aarch64 等效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980075/
我是一名优秀的程序员,十分优秀!