我们经常将主流Arm设备分为以下两类:
- Arm v7-A
- Arm v8-A
经常能听到说Arm v8-A架构向下兼容到v7,如图下所示:图片来源
![b4aac1d2533478f5df81098933e2193f.png](https://i-blog.csdnimg.cn/blog_migrate/3bc195e28c2281ec56fe8adde3ee4710.png)
「Arm V8-A」架构包含「AARCH32」和「AARCH64」两种State,每个应用程序只能运行在其中一种State下;其中「AARCH32」是「Arm v7-A」的超集,而「AARCH64」下还包含了「NEON」的double
运算等特有指令;
指令集
Arm V7-A:
- A32
Arm V8-A (AARCH 32):
- A32
- T32
Arm V8-A (AARCH64):
- A64
因此我们所说的向下兼容指的是Arm V8-A的芯片能够以「AARCH32」的State运行任何针对Arm V7-A编译的应用程序;
Android
在对Android NDK编译链接的过程中,我们可以在「CMAKE」指定CMAKE_ANDROID_ARCH_ABI
为:
- armeabi-v7a
- arm64-v8a