章节列表
之一:ARM汇编语言开篇
之二:C/C++程序生成ARM汇编程序的进程剖析
之三:ARM汇编语言程序结构
之四:ARM处理器的寻址方法
之五:ARM指令集与Thumb指令集
之六:NEON指令集与VFP指令集
NEON指令集与VFP指令集是ARM指令集的扩展,多用于多媒体编程和浮点运算。
一 Android渠道运用NEON指令集与VFP指令集
Android NDK从r3版别开端也增加了对NEON指令集与VFP指令集的支撑。运用方法如下所示:
1 运行时检测处理器是否支撑NEON指令集与VFP指令集
Android NDK供给了一个cpufeatures的库来让开发者在运行时检测处理器是否支撑NEON指令集与VFP指令集。要运用cpufeatures库,
(1) 首先在Android.mk中增加以下内容:
$(call import-module, android/cpufeatures)
(2) 然后在C/C++代码中包括头文件cpu-features.h文件。该文件包括以下函数。
- android_getCpuFamily():获取处理器宗族信息,关于ARM处理器,该函数一直回来常量值ANDROID_CPU_FAMILY_ARM。
- android_getCpuFeatures():检测处理器支撑的指令集,假如支撑NEON指令集,则回来的64位数据中ANDROID_CPU_ARM_FEATURE_NEON标志就会被置位。假如支撑VFPv3指令集,则回来的64位数据中ANDROID_CPU_ARM_FEATURE_VFPv3标志就会被置位。
- android_getCpuCount():获取处理器的核心数。
z只需要在Android.mk增加一下内容即可运用。
TARGET_ARCH_ABI:=armeabi-v7aLOCAL_ARM_:=true