【问题标题】:Can I use Thumb instructions in an arm64 binary?我可以在 arm64 二进制文件中使用 Thumb 指令吗?
【发布时间】:2017-09-07 01:01:21
【问题描述】:

我正在尝试使用拇指指令使我的 iOS 应用程序更小(二进制文件的代码部分为 70 MB)。似乎有很多关于使用 armv7 的拇指版本的讨论,例如这里:http://wanderingcoder.net/2010/07/19/ought-arm/。但是,我找不到很多关于 arm64 + Thumb 的信息。甚至可能吗?如果是这样,我怎么能用这种方式编译?

【问题讨论】:

    标签: arm64 thumb


    【解决方案1】:

    来自ARMv8 Reference Manual,§A1.3.2(第 A1-35 页):

    AArch64 状态仅支持单个指令集,称为 A64。这是一个固定长度的指令 使用 32 位指令编码的集合。

    所以不,64 位 Thumb 不是一个东西。

    【讨论】:

    • 值得注意的是,您可以使用在 ARMv8 内核上以 AArch32 状态运行的 T32 指令编译二进制文件
    • @chrisvarnz 值得注意的是,并非所有 ARMv8 内核都支持 AArch32。
    • 当然,我认为Android也不支持它!
    • @Siguza 确实有些内核不支持 AArch32?您的报价与 AArch64 执行状态有关,但手册明确指出 AArch32 是有效的执行状态,并且处理器可以切换到不同的执行状态。
    • @Benni ID_AA64PFR0_EL1 功能寄存器指定 EL3、EL2、EL1 和 EL0 是否支持 AArch32。 AArch64 是隐含/必需的,但 AArch32 不是。例如,如果您(设法)在 Apple A11 CPU 或更高版本上检查该寄存器,您会发现 AArch32 在任何异常级别都不受支持。
    猜你喜欢
    • 2020-05-27
    • 2022-11-28
    • 1970-01-01
    • 2018-10-04
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多