Google官方在NDK用户指南中只提到了如何针对x86架构的处理器使用NASM的方法。而NDK本身是支持GAS的,并且CMake工具很早就支持了GAS汇编特性。我们只需要在CMake中使用enable_language(ASM)
声明即可支持对GAS汇编文件的构建支持。
通常来说,我们在Android Studio中可能会同时支持ARM、ARM64以及x86-64等多种架构,当然,GAS本身就能支持这些架构。但如果说,我们想对x86-64架构使用NASM,而对其他架构使用GAS的话,就需要对架构做判断了,可参照一下CMake代码:
if(${ANDROID_ABI} STREQUAL "x86_64")
enable_language(ASM_NASM)
set(asm_SRCS src/main/cpp/test.asm)
elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
enable_language(ASM)
set(asm_SRCS src/main/cpp/arm_test.s)
endif()
目前来看,GAS能同时支持.s
文件和.asm
文件;而NASM只能支持.asm
文件。因此如果我们不用条件判断对它们进行剥离,那默认情况下,.asm
文件也会用GAS进行构建,所以这里我们需要当心。
网友评论