链接Android C代码和ARM汇编程序

Rog*_*ter 6 assembly android arm android-ndk

我写了一个Android应用程序.它使用主C代码模块和链接的C代码模块.现在我想用ARM汇编程序模块替换链接模块.有人有一个简单的例子吗?

ogn*_*ian 5

这是一个Android.mk文件的例子,它将构建包含程序集的sourcetree.要查看完整示例,请检查NDK包中分发的hello-neon样本.

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_MODE := arm  # remove this if you want thumb mode
LOCAL_ARM_NEON := true # remove this if you want armv5 mode

LOCAL_CFLAGS :=  -std=c99 -pedantic -v

LOCAL_SRC_FILES := # list your C, C++ and assembly sources here.
           # assembly source files ends with extension .S
           # add .arm after the extension if you want to compile in armv5 mode (default is thumb)
           # add .arm.neon to compile in armv7 mode

LOCAL_C_INCLUDES := $(LOCAL_PATH)

LOCAL_LDLIBS := -llog

LOCAL_MODULE := #the name of your shared library

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)


小智 5

我写了一个教程来做到这一点。 http://www.eggwall.com/2011/09/android-arm-assembly-calling-assembly.html

Android 中的 ARM 汇编并不困难,但有许多移动部分:您需要一个汇编源、一个 C 存根、一个 Makefile 和调用底层汇编代码的 Java 存根“本机”方法。

你可以从上面的链接下载源代码,看看它是如何工作的。一旦你有了一个可行的例子,就很容易戳穿并使它适合你的需要。