我可以为不同的 ARM 处理器(Cortex、Tegra 等)使用相同的 ARM 程序集吗?

Ole*_*rov 4 assembly arm instruction-set cpu-architecture

我感兴趣的是 ARM 程序集是否适用于所有类型的 ARM?例如,如果我在ARM汇编中编写一些函数,它会在 Cortex、Nvidia Tegra、Qualcomm 等上工作吗?我可以在不同的 ARM 处理器上使用相同的指令集或SIMD引擎NEON吗(比如在 x86-64 汇编中)?

Cod*_*ers 5

你在一句话中列出了 Cortex、Nvidia Tegra 和 Qualcomm,这是一种混合概念——Cortex 是由 ARM 开发的 CPU 内核系列的名称,而 Tegra 则命名使用 ARM CPU 的片上系统,例如 Tegra 2/3芯片使用 Cortex-A9 内核。

对您来说重要的是每个目标芯片支持的指令集,而这又取决于所使用的 ARM 内核。这个现有的ARM内核的概述可以是一个很好的起点。此外,来自 ARM 页面的这张图提供了一个很好的快速概览。

另一个要检查的好文档是ARM 架构参考手册 ARMv7-A 和 ARMv7-R 版(您需要注册一个免费帐户才能访问它)。

截至 NEON,根据 ARM 网页,Cortex-A7Cortex-A8Cortex-A15内核默认配备 NEON,而对于Cortex-A5Cortex-A9,它是可选功能(即芯片制造商决定是否包括它) . 同样,在这种情况下,您必须查阅芯片的数据表以检查是否支持 NEON。