代码之家  ›  专栏  ›  技术社区  ›  Engineer999

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

  •  0
  • Engineer999  · 技术社区  · 3 年前

    我一直在为一个旧设备开发代码,该设备具有基于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设备上运行吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Flexz    3 年前

    CPU因核心体系结构(包括指令集)和外围设备集而异。外围设备的差异通过驱动器和HAL来解决。核心拱的差异通过工具链来解决。

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

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

    推荐文章