Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode arm64 Vs arm64e

Xcode 10.1 mention Support for arm64e (Preview). Anyone have any idea about arm64e. Any difference between arm64 and arm64e.

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_1_beta_2_release_notes?language=objc

I searched arm64e. But couldn't found proper explanation.

like image 757
Puvanarajan Avatar asked Oct 03 '18 09:10

Puvanarajan


People also ask

What is arm64e iOS?

In iOS 12, Apple introduced a new architecture they call arm64e. This implements the armv8. 3 architecture and is supported by the Apple A12 and newer processors. Specifically, this architecture is known for implementing pointer authentication.

What is arm64e architecture?

What is arm64e? • arm64e is an ABI for pointer authentication on ARMv8.3. • ARMv8.3 is an AArch64 extension provided by the Apple A12 and later. (e.g. iPhone XR/XS, released September 2018) • Used for all system software on those devices.

Is iPhone XS Max arm64e?

Devices using the Apple A12 or later A-series processor — like the iPhone XS, iPhone XS Max, and iPhone XR — support the arm64e architecture.

What is PAC Apple?

3-A is Pointer Authentication, a feature where the upper bits of a pointer are used to store a Pointer Authentication Code (PAC), which is essentially a cryptographic signature on the pointer value and some additional context.


3 Answers

The arm64e architecture is used on the A12 chipset, which is added in the latest 2018 iPhone models (XS/XS Max/XR). The code compiles to ARMv8.3, which brings support for new features. Namely:

  • Pointer authentication
  • Nested virtualization
  • Advanced SIMD complex number support
  • Improved Javascript data type conversion support
  • A change to the memory consistency model
  • ID mechanism support for larger system-visible caches

The A12 features an Apple-designed 64-bit ARMv8.3-A six-core CPU

https://en.wikipedia.org/wiki/Apple_A12

Read more about the architecture here as well:

https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions

like image 52
gi097 Avatar answered Oct 17 '22 09:10

gi097


To test arm64e with an app, update the Architectures setting in Build Settings. More details at https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication.

Note that if you have CocoaPods dependencies, all of the Pods build targets must be similarly changed.

If any of the CocoaPods dependencies are binary instead of source pods, make a request to the vendor like https://github.com/firebase/firebase-ios-sdk/issues/4110

like image 44
Paul Beusterien Avatar answered Oct 17 '22 09:10

Paul Beusterien


arm64 vs arm64e

Both are ABIs (lower level APIs) which compile to instructions (defined by an ISA/ instruction set architecture). arm64e is used on Mac M1's and iPhones. The differences between them are the points in Giovanni's answer.

arm64e vs ARMv8.3?

Both are ambiguously called "architectures". arm64e is not an ISA but an ABI (Application binary interface), and ARMv8.3 is an ARM ISA (technically an extension to AArch64).

In summary, arm64e is an ABI (often called architecture, but not ISA), which compiles to a real ISA. The new Apple devices use arm64e, including M1 macs.

iPhones (e.g. A14, A15), M1 Macs, M1 Pro Macs, etc.

They all use the arm64e ABI, but Apple has an ISA license, and create custom ISAs.

ABI vs Architecture?

The Android documentation has a useful guide about Android ABIs, containing general information:

Different Android devices use different CPUs, which in turn support different instruction sets. Each combination of CPU and instruction set has its own Application Binary Interface (ABI). An ABI includes the following information: read more there

like image 40
Ben Butterworth Avatar answered Oct 17 '22 09:10

Ben Butterworth