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