我看到ARMv8只是ARMv7架构的扩展,所有在ARMv7上编译的代码都应该在ARMv8上运行。我对ARMv8向ARMv7的向后兼容感兴趣。在ARMv8上编译的代码是否会在ARMv7上运行?
我有一个特别感兴趣的案例:我想在comma.ai's Openpilot visiond binary(NVIDIA Cortex-A15 CPU)上运行为OnePlus 3 smartphone(Qualcomm MSM8996 Snapdragon 820 CPU)编译的Nvidia Jetson TK1。想象力会在Jetson上运行吗?
编辑:可能有更多的问题比CPU兼容性,因为visiond可能在该手机上大量使用GPU。可能取决于他们是否使用一些标准的并行化方式(OpenCL,NEON等)或者为Snapdragons GPU提供一些自定义代码。即使使用OpenCL,在不同的硬件上兼容的可能性也很低。
我相信aarch32 userland与ARMv7完全或非常高度向后兼容,即为ARMv7编译的用户态程序应该只在AArch32中工作,但我在ARM手册中找不到精确的引用。
aarch32确实在ARMv7上添加了新指令,但是大多数指令似乎是ARMv8添加的功能,设计人员决定在aarch32上公开。因此,aarch32与ARMv7不向前兼容,即为aarch32编译的程序可能无法在ARMv7上运行。
我不确定系统的土地。另见:Does ARMv8 AArch32 mode has backward compatible with armv4 , armv5 or armv6?