arm64和aarch64之间的差异

我有两个“解锁”设备,一个iPad mini 3和一个Galaxy Edge 6,它们都有一个终端和一组简单的unix命令。 我认为这两款设备都配备了arm64处理器,但是当我运行时

uname -a 

在两台设备上我都得到了以下内容:

对于iPad mini 3:

 xxxxs-iPad:/var/mobile root# uname -a Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP 

对于三星Galaxy s6 Edge:

 u0_a203@zerolte:/ $ uname -a Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux 

如果我没有错,那么J85mAP和GNU / Linux两种情况下的最后一个信息代表固件,而倒数第二个信息,arm64和aarch64代表处理器。

我的问题如下:显然字符串“arm64”和“aarch64”不一样,但我一直认为arm64和aarch64是相同的。 (当你在这里把arm64标签放到一个问题时,甚至会告诉你。)

那么,他们真的相同吗?

特别是,对于两个目标的交叉构建库,我应该担心什么? 事实上,我考虑到了gcc 5.2.0,但也许还有较低版本。 我可以通过吗?

 -target=arm64 

要么

 -target=aarch64 

根据我的目标设备,只是担心配置的其他选项?

编辑哼,再看一遍,没有成功。

Related of "arm64和aarch64之间的差异"

似乎ARM64是由Apple和AARCH64由其他人创建的,最着名的是GNU / GCC人员。

经过一些谷歌搜索我find了这个链接:

LLVM 64位ARM64 / AArch64后端已合并

所以有意义的是,iPad称自己为ARM64,因为Apple使用LLVM,而Edge使用AARCH64,因为Android使用的是GNU GCC工具链。

AArch64是Armv8-A架构中引入的64位状态( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A )。 向后兼容Armv7-A和之前的32位Arm架构的32位状态称为AArch32。 因此,64位ISA的GNU三元组是aarch64。 Linux内核社区选择将内核的端口调用到这个架构arm64而不是aarch64,这就是arm64的一些用法所在。

据我所知,aarch64的Apple后端称为arm64,而LLVM社区开发的后端称为aarch64(因为它是64位ISA的规范名称),后来两者合并,后端现在称为aarch64 。

所以aarch64和arm64指的是同一个东西。