对于 Linux 或其他运行的软件来说,arm64/aarch64 的不同实现有什么区别?

对于 Linux 或其他运行的软件来说,arm64/aarch64 的不同实现有什么区别?

对于x86_64架构的CPU,无论是Intel、AMD还是VIA。该架构的软件可以正常运行。

但是,对于arm64/aarch64(arm64/aarch64的区别是这里),有很多供应商。对于arm64/arch64 的Linux 发行版有很多方向。

这里是Arch Linux ARM的arm支持平台列表。

但对于德班,没有那么多选择(只有 arm64 而对于小端只有 armel)。

Q1. Archlinuxarm的那些支持平台有什么区别?

为了弄清楚Q1,我用手机进行了尝试。我的手机架构是arm64v7el(4*ARMCortex-A73+4*ARMCortex-A53)。我下载Armv7 的 Archlinuxarm - 树莓派 2。并将 .tar.gz 文件解压到 Termux 主目录中的文件夹中。

然后我打开 Termux 并输入:

proot -r /path/to/my/archlinuxarm/rootfolder/

不幸的是,据说 shell 解释器不可执行(在不同的体系结构中)。

也许,这是因为Endian的差异。然而,对于armv8,有一个archlinuxarm的下载选项,它是通用的

Q2。如果我在A平台到B平台安装一个archlinuxarm系统。是不是无法最大优化或者完全不兼容?

Q3。不同平台的发行版是否只是驱动程序不同或者编译Linux内核时参数不同?

Q4。让我困惑的是为什么archlinuxarm社区不提供仅适用于arm64、armel等的stage rootfs tarball,而不是不同供应商的不同产品?这是否意味着 DragonBoard 410c 中的指令集与 Raspberry Pi 3 不同?或者换句话说,如果我将适用于 DragonBoard 410c 的 Archlinuxarm 安装到 Raspberry Pi 3 上,会发生什么?能正常开机吗?

答案1

您的问题可能会被解释为非常广泛,但我认为您实际上要问的是非常具体的。 arm64 与 aarch64 不同实现之间的根本区别。

您问题的核心是不同的 CPU 提供不同的指令集。我通常会引用这个维基百科页面,标题为:指令集列表,因为这是我在互联网上见过的最完整的列表。

指令集

每个微处理器的核心都是它可以执行的一组指令。指令集的接口是编译器将高级编程语言(例如 C/C++)转换为机器代码的接口。该机器代码是来自 CPU 指令集的指令。顺便说一句,指令集中的指令通常如下所示:

x86 NASM -https://rosettacode.org/wiki/Bitwise_operations#x86_Assembly
    extern printf
    global main

    section .text
main
    mov eax, dword [_a]
    mov ecx, dword [_b]
    push    ecx
    push    eax

    and     eax, ecx
    mov ebx, _opand
    call    out_ops

笔记:您还会听到称为汇编语言的机器代码。

arm64 与 aarch64

通过这两种架构,我能够从 SO 中找到这个答案:标题为:arm64 和 aarch64 的区别,其差异如下:

AArch64 是 64 位状态中引入的Armv8-A架构。向后兼容 Armv7-A 和之前的 32 位 Arm 架构的 32 位状态称为 AArch32。因此,64 位 ISA 的 GNU 三元组是 aarch64。 Linux 内核社区选择将他们的内核移植到该架构,而不是 aarch64,因此这就是一些 arm64 用法的来源。

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

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

您的一些问题

您提出的问题太多,无法用一个问题来回答。我会尝试回答最重要的问题。

Q4。让我困惑的是为什么archlinuxarm社区不提供仅适用于arm64、armel等的stage rootfs tarball,而不是不同供应商的不同产品?这是否意味着 DragonBoard 410c 中的指令集与 Raspberry Pi 3 不同?或者换句话说,如果我将适用于 DragonBoard 410c 的 Archlinuxarm 安装到 Raspberry Pi 3 上,会发生什么?能正常开机吗?

对于这方面的细节,您必须询问 Arch 社区为什么他们选择在该项目中做一些事情。关于在 Raspberry Pi 3 上运行专为 410c 构建的 Archlinuxarm 的问题,我的建议是尝试一下。

这两个 CPU 都是 ARM 处理器,如下所示:

SS1

所以我的期望是您能够在两者上使用相同的二进制文件。最后,我可能会在 Raspberry Pi Stackexchange 网站上提出一个后续问题。根据您的要求,有很多问题,例如:

参考

相关内容