所有的ARM编译器会产生相同的汇编代码并在不同的cpu上运行吗?



我一直在为一个旧设备开发代码,该设备具有基于arm的NXP i.MX28单核CPU。设备运行嵌入式Linux。

我现在正在升级到一个更好的设备,它有NXP i.MX6UL四核处理器,当然也基于arm,也运行嵌入式inux。

我用于构建i.MX28代码的相同工具链是否正常也适用于i.MX6UL,即使i.MX6UL更先进,拥有更多核心等?

我已经构建了我的代码,现在用相同的编译器进行测试,甚至在似乎运行良好的Rasberry Pi上运行它。Rasberry Pi使用Broadcom BCM2711 SoC和ARM Cortex-A72处理器,这也是一个不同的CPU。

因此我必须问,任何ARM工具链构建代码并能够在任何类型的ARM设备上运行吗?

cpu的核心架构(包括指令集)和外围设备的设置不同。外设的差异由驱动程序和hal来解决。通过工具链解决芯拱差异

如果工具链"知道";它将发出相应的汇编代码,这些代码将在新的CPU上运行。因此,编译器不会生成相同的程序集,但在重新编译后会运行相同的源代码,这就是高级语言的思想。

当旧代码包含内联程序集或使用某些特定的DSP指令或库时,问题就会出现

最新更新