【发布时间】:2017-09-07 01:01:21
【问题描述】:
我正在尝试使用拇指指令使我的 iOS 应用程序更小(二进制文件的代码部分为 70 MB)。似乎有很多关于使用 armv7 的拇指版本的讨论,例如这里:http://wanderingcoder.net/2010/07/19/ought-arm/。但是,我找不到很多关于 arm64 + Thumb 的信息。甚至可能吗?如果是这样,我怎么能用这种方式编译?
【问题讨论】:
我正在尝试使用拇指指令使我的 iOS 应用程序更小(二进制文件的代码部分为 70 MB)。似乎有很多关于使用 armv7 的拇指版本的讨论,例如这里:http://wanderingcoder.net/2010/07/19/ought-arm/。但是,我找不到很多关于 arm64 + Thumb 的信息。甚至可能吗?如果是这样,我怎么能用这种方式编译?
【问题讨论】:
来自ARMv8 Reference Manual,§A1.3.2(第 A1-35 页):
AArch64 状态仅支持单个指令集,称为 A64。这是一个固定长度的指令 使用 32 位指令编码的集合。
所以不,64 位 Thumb 不是一个东西。
【讨论】:
ID_AA64PFR0_EL1 功能寄存器指定 EL3、EL2、EL1 和 EL0 是否支持 AArch32。 AArch64 是隐含/必需的,但 AArch32 不是。例如,如果您(设法)在 Apple A11 CPU 或更高版本上检查该寄存器,您会发现 AArch32 在任何异常级别都不受支持。