2010-03-04 43 views
9

我被要求评估我们产品的Android平台,并且我正在寻找各种选项,我只是刚刚抓到表面,还有一件事是困扰我的是我无法看到如何将代码编译为直接的ARM代码(没有Thumb),我知道Thumb运行速度较慢,我们需要在代码的关键部分中实现性能。Android NDK - 它支持直接的ARM代码还是只支持Thumb

认为它应该只是被设置在Android.mk文件LOCAL_CFLAGS-march标志,但我不能得到那个工作...

谁能帮助?

回答

16

指定Android.mk中的模块的以下标志将编译直接的ARM代码。

LOCAL_ARM_MODE := arm 

启用优化还可以帮助:

LOCAL_CFLAGS := -O3 
16

您可以使用ARM,Thumb或两者的组合。

在生成文件的LOCAL_SRC_FILES中,您将列出MyFile.c,指定MyFile.c.arm(不要重命名磁盘上的文件,只需在源文件列表中执行此操作)。此惯例在整个Android中用于对性能至关重要的代码(或由于某种原因只需为ARM)。

当然,通常的注意事项是:Thumb代码倾向于需要更多的指令来完成某些事情,但每条指令的大小都是一半,所以代码通常比较慢一些,但也要小一点。在某些情况下,较小的尺寸可以更好地适应ARM CPU中的(微小)缓存,实际上可以更快。