我写了一个Android应用程序。它使用主C代码模块和链接的C代码模块。现在我想用ARM汇编程序模块替换链接模块。有人有一个简单的例子吗?
答案 0 :(得分: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)
答案 1 :(得分:3)
我写了一篇教程来做到这一点。 http://www.eggwall.com/2011/09/android-arm-assembly-calling-assembly.html
Android中的ARM程序集并不困难,但有很多动作:你需要一个汇编源代码,一个C stub,一个Makefile,以及调用底层汇编代码的Java stub“native”方法。
您可以从上面的链接下载源代码,看看它是如何工作的。一旦你有一个工作的例子,很容易戳,并使其符合你的需要。
答案 2 :(得分:0)
我看了vikram的文章我有一个观点,对于初学者来说,最好使用Android源代码在Android中构建和运行汇编程序代码。
e.g。您可以在BUILD_EXECUTABLE
Android.mk
”的模块
您可以在C代码中包含一个main函数,并使用main.c
构建汇编代码您甚至可以在gingebread/frameworks/base/<mymodule>