【问题标题】:How to find out if an ARMv8 processor supports the AArch32 execution state?如何确定 ARMv8 处理器是否支持 AArch32 执行状态?
【发布时间】:2021-03-05 01:37:40
【问题描述】:

ARMv8 架构参考手册列出了数英里的特殊寄存器,其中一些允许程序员在运行时检测 CPU 功能的可用性。

是否有这样的寄存器告诉程序员是否支持 AArch32 执行状态?我发现的一件事是ID_PFR0_EL1,它告诉我们支持 AArch32 指令集的哪些变体,但它似乎并没有说明是否完全支持该指令集。

我在寻找什么寄存器或其他东西?

【问题讨论】:

    标签: assembly arm arm64 armv8


    【解决方案1】:

    您正在寻找ID_AA64PFR0_EL1

    来自the manual,第 D13-3253 页:

    是的,有些 ARMv8 CPU 根本不支持 AArch32。 Apple 的 A11 及更高版本就是一个例子。

    【讨论】:

    • 谢谢!我一定错过了这个。所以我认为Apple M1也不支持它?
    • 我明白了,所以非 AArch32 CPU 在所有四个半字节中都会有 0000 或 0001。
    • @fuz 我没有机会将此寄存器转储到 M1 上,但我强烈假设如此。
    • @Siguza 我刚刚尝试过,但 macOS Big Sur 似乎不允许您从用户进程中读取此寄存器。真是太可惜了。
    • @Siguza FreeBSD 确实如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2014-03-02
    • 2014-04-26
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多