10

我被要求为我们的产品评估 Android 平台,我正在寻找各种选项,我只是刚刚触及表面,困扰我的一件事是我看不到如何将代码编译为直接 ARM 代码(没有 Thumb),我知道 Thumb 运行速度较慢,我们需要代码关键部分的性能。

认为它应该只是在文件中设置-march标志,但我无法让它工作......LOCAL_CFLAGSAndroid.mk

任何人都可以帮忙吗?

4

2 回答 2

16

您可以在 ARM、Thumb 或两者的混合中构建。

LOCAL_SRC_FILES在您要列出的 makefile 中MyFile.c,指定MyFile.c.arm(不要重命名磁盘上的文件,只需在源文件列表中进行)。此约定在整个 Android 中用于对性能至关重要的代码(或出于某种原因只需要 ARM)。

当然,通常的注释适用:Thumb 代码往往需要更多指令来完成某事,但每条指令的大小只有一半,因此代码通常会慢一些,但也会小一些。在某些情况下,较小的尺寸可以更好地适应 ARM CPU 中的(微小)缓存,并且实际上可能更快。

于 2010-03-19T20:55:50.427 回答
16

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

LOCAL_ARM_MODE := arm

启用优化也可能有帮助:

LOCAL_CFLAGS := -O3
于 2011-06-05T23:21:53.313 回答