我正在尝试构建一个使用Android-ndk生成共享库的jni项目。 我将根据需要使用汇编语言编写部分代码,因此我将项目配置为以下内容。
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_test
LOCAL_SRC_FILES := Test.cpp MyAsm.s
LOCAL_CFLAGS :=
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_ABI := armeabi-v7a
APP_STL := stlport_static
Test.cpp:
...
MyAsmFunc();
...
MyAsm.s:
.text
.align 2
.global MyAsmFunc
MyAsmFunc:
...
tbb [PC,R1]
...
cbnz R1,loc_51ACE
...
当我编译项目时,我收到以下错误信息。
MyAsm.s:224: Error: selected processor does not support ARM mode `tbb [PC,R1]'
MyAsm.s:882: Error: selected processor does not support ARM mode `cbnz R1,loc_51ACE'
我的问题是如何成功建立项目。请帮帮我。 提前谢谢。
答案 0 :(得分:0)
根据this page,
These 16-bit Thumb instructions are available in ARMv6T2 and above.
There are no ARM or 32-bit Thumb versions of these instructions.
你正在编译ARMv7-A,所以第一部分没问题。但是,它试图将指令解释为ARM而不是THUMB / THUMB2。将.thumb
/ .thumb_func
指令添加到程序集源文件以设置THUMB模式。另请参阅GNU as docs。