Android NDK – 它支持直接的ARM代码还是仅支持Thumb

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

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

谁能帮忙?

  • Android:如何使用ndk从c ++代码中读取游戏资产文件
  • Android NDK构build - 包含LOCAL_SHARED_LIBRARIES?
  • 如何以编程方式终止android NDK(原生活动)应用程序?
  • Android Studio错误中的NDK集成
  • Android NDK - 只能用C / C ++编写
  • “wordlist”的非数字第二个参数
  • 如何编译和运行Android系统上的C / C ++程序
  • 在哪里可以find旧版本的ndk
  • Android.mk为模块指定以下标志将编译直接的ARM代码。

     LOCAL_ARM_MODE := arm 

    启用优化也可能有助于:

     LOCAL_CFLAGS := -O3 

    你可以用ARM,Thumb或者两者的组合来构build。

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

    通常的注意事项当然适用:Thumb代码往往需要更多的指令才能完成,但是每个指令只有一半的大小,所以代码通常会慢一点,但也要小一点。 在某些情况下,较小的尺寸可以更好地适应ARM CPU中的(微小)caching,实际上可以更快。