0

我正在尝试构建一个使用 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'

我的问题是如何成功地构建项目。请帮帮我。提前致谢。

4

1 回答 1

0

根据这个页面

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

于 2013-08-13T21:53:04.827 回答