基于Android的ARM匯編語(yǔ)言系列之六:NEON指令集與VFP指令集
之一:ARM匯編語(yǔ)言開(kāi)篇
之二:C/C++程序生成ARM匯編程序的過(guò)程分析
之三:ARM匯編語(yǔ)言程序結(jié)構(gòu)
之四:ARM處理器的尋址方式
之五:ARM指令集與Thumb指令集
之六:NEON指令集與VFP指令集
NEON指令集與VFP指令集是ARM指令集的擴(kuò)展,多用于多媒體編程和浮點(diǎn)運(yùn)算。
一 Android平臺(tái)使用NEON指令集與VFP指令集
Android NDK從r3版本開(kāi)始也添加了對(duì)NEON指令集與VFP指令集的支持。使用方法如下所示:
1 運(yùn)行時(shí)檢測(cè)處理器是否支持NEON指令集與VFP指令集
Android NDK提供了一個(gè)cpufeatures的庫(kù)來(lái)讓開(kāi)發(fā)者在運(yùn)行時(shí)檢測(cè)處理器是否支持NEON指令集與VFP指令集。要使用cpufeatures庫(kù),
(1) 首先在Android.mk中添加以下內(nèi)容:
$(call import-module, android/cpufeatures)
(2) 然后在C/C++代碼中包含頭文件cpu-features.h文件。該文件包含以下函數(shù)。
- android_getCpuFamily():獲取處理器家族信息,對(duì)于ARM處理器,該函數(shù)始終返回常量值A(chǔ)NDROID_CPU_FAMILY_ARM。
- android_getCpuFeatures():檢測(cè)處理器支持的指令集,如果支持NEON指令集,則返回的64位數(shù)據(jù)中ANDROID_CPU_ARM_FEATURE_NEON標(biāo)志就會(huì)被置位。如果支持VFPv3指令集,則返回的64位數(shù)據(jù)中ANDROID_CPU_ARM_FEATURE_VFPv3標(biāo)志就會(huì)被置位。
- android_getCpuCount():獲取處理器的核心數(shù)。
z只需要在Android.mk添加一下內(nèi)容即可使用。
TARGET_ARCH_ABI:=armeabi-v7aLOCAL_ARM_:=true
評(píng)論