arm64和aarch64之间的差异

时间:2015-08-06 09:14:30

标签: android ios gcc arm arm64

我有两个"解锁"设备,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"和#34; aarch64"不一样,但我一直认为arm64和aarch64是一样的。 (当你在这里把arm64标签放到一个问题时,它甚至会被告知。)

那么,他们真的相同吗?

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

-target=arm64

-target=aarch64

根据我所针对的设备,只是担心要配置的其他选项?

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

4 个答案:

答案 0 :(得分:36)

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

经过一些谷歌搜索后,我找到了这个链接:

The LLVM 64-bit ARM64/AArch64 Back-Ends Have Merged

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

答案 1 :(得分:26)

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

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

所以aarch64和arm64指的是同样的事情。

答案 2 :(得分:0)

实际上ppc64苹果是ppc64 / PPC64,例如在移植后仅用aarch64和AARCH64的Android / pi / adrino补丁就花了1 5个字符,所以在Debian下编译Gridcoin的代码比Gridcoin社区多得多。是一个8派,因此它的价值比2年前少了2倍,这是在2017年7月4日oh被俄罗斯人砍死的时候,它升到很高的水平,然后陷入困境,但没有恢复。我有一个sun ultra 80,我打算移植到Caraka,他是“受信任的社区负责人”,又是GRC8的一部分,他问社区谁有非x86硬件可以通过移植来提供帮助,因此源代码像真实的源代码一样被编译并编译在任何平台和架构上。

武器不是新武器,只是重命名了mips。

答案 3 :(得分:0)

Linux 认为它们是一样的;


    int mtx[t1][t2];
    matrix(t1, t2);

    for (int i = 0; i < t1; i++) {
        for (int j = 0; j < t2; j++) {
            printf("%d ", mtx[i][j]);
        }
        printf("\n");
    }