Xcode arm64 与 arm64e
Posted
技术标签:
【中文标题】Xcode arm64 与 arm64e【英文标题】:Xcode arm64 Vs arm64e 【发布时间】:2019-03-08 12:32:59 【问题描述】:Xcode 10.1 提到了对 arm64e 的支持(预览版)。任何人都对 arm64e 有任何想法。 arm64 和 arm64e 的区别。
https://developer.apple.com/documentation/xcode_release_notes/xcode_10_1_beta_2_release_notes?language=objc
我搜索了 arm64e。但找不到合适的解释。
【问题讨论】:
***.com/questions/52481335/… 【参考方案1】:arm64e 架构用于 A12 芯片组,该芯片组已添加到最新的 2018 款 iPhone 机型(XS/XS Max/XR)中。代码编译为 ARMv8.3,带来对新功能的支持。即:
指针认证 嵌套虚拟化 高级 SIMD 复数支持 改进的 javascript 数据类型转换支持 内存一致性模型的更改 ID 机制支持更大的系统可见缓存A12 配备 Apple 设计的 64 位 ARMv8.3-A 六核 CPU
https://en.wikipedia.org/wiki/Apple_A12
也可以在此处阅读有关架构的更多信息:
https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions
【讨论】:
【参考方案2】:要使用应用测试 arm64e,请更新 Build Settings
中的 Architectures
设置。更多详情请访问https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication。
请注意,如果您有 CocoaPods 依赖项,则所有 Pods 构建目标都必须进行类似的更改。
如果任何 CocoaPods 依赖项是二进制而不是源 pod,请向供应商发出请求,例如 https://github.com/firebase/firebase-ios-sdk/issues/4110
【讨论】:
【参考方案3】:
arm64
与 arm64e
两者都是ABIs(较低级别的 API),可编译为指令(由 ISA/指令集架构定义)。 arm64e 用于 Mac M1 和 iPhone。它们之间的区别是Giovanni's answer中的点。
arm64e
与 ARMv8.3
?
两者都被含糊地称为“架构”。 arm64e
不是 ISA,而是 ABI(应用程序二进制接口),而 ARMv8.3 是 ARM ISA(技术上是 AArch64 的扩展)。
总之,arm64e
是一个 ABI(通常称为架构,但不是 ISA),它编译为真正的 ISA。新的 Apple 设备使用 arm64e,包括 M1 mac。
iPhone(例如 A14、A15)、M1 Mac、M1 Pro Mac 等
他们都使用 arm64e ABI,但 Apple 拥有 ISA 许可证,并创建自定义 ISA。
ABI 与架构?
android 文档有一个关于Android ABIs 的有用指南,其中包含一般信息:
不同的 Android 设备使用不同的 CPU,这反过来又支持 不同的指令集。 CPU和指令的每种组合 set 有自己的应用程序二进制接口 (ABI)。 ABI 包括 以下信息: read more there
【讨论】:
以上是关于Xcode arm64 与 arm64e的主要内容,如果未能解决你的问题,请参考以下文章
无法以 64 位模式 (arm64) 构建我的 XCode 项目
Xcode 5 命令行:架构“arm64”的部署目标“3.0.0”无效
Xcode 12 Apple M1 arm64 - 可设计错误:“错误的架构”