x86_64是否与指令中的aarch64等效?

时间:2016-03-14 05:22:55

标签: x86-64 arm64 page-tables

ARM的aarch64有一个AT(地址转换)指令,它通过地址转换阶段运行虚拟地址,返回PAR_EL1中的物理地址,以及指示转换是否存在的状态。请参见ARMv8 ARM,第C5.5节。

问题是:x86_64是否具有等价物?英特尔的系统编程指南(第3卷,第5章)讨论了指针验证,但这些方法似乎适用于段级保护,并且似乎没有任何页级保护指针验证指令。

是否有人知道x86_64的类似ARMv8-AT的指令?

1 个答案:

答案 0 :(得分:2)

不,x86-64指令集没有执行物理到虚拟地址转换的指令。它只有基本指令,如设置页面目录寄存器,使地址无效以及启用分页。

如果您想在x86-64上使用此功能,我担心您需要处于管理员模式才能执行此操作。您将读取CR3寄存器,可能会更改一些页表映射以访问您需要的物理地址,并通过手动遍历页面目录和表来执行地址转换。

您的问题提出了一个问题:您需要了解虚拟到物理地址转换的目的是什么?分页应该对应用程序是透明的,并且很少有充分的理由知道对应于特定虚拟内存地址的物理内存地址。