2

我知道 LOCAL_CFLAGS 是一组可选的编译器标志,将在构建 C 源文件时传递。我的问题是这个标志是什么意思“-mno-thumb”或者我在哪里可以找到可用的 LOCAL_CFLAGS 列表及其含义。

先感谢您!!

4

2 回答 2

5

这些LOCAL_CFLAGS选项在Android.mk文件中等同于通常与编译器一起使用以指定编译选项的常用CFLAGS 。

有很多这样的选项,其中大多数的文档都可以在GCC 文档的此页面上的各种链接中找到。

至于该-mno-thumb选项,它会停用大多数(最新)ARM 处理器上可用的Thumb可选指令集。这个指令集是一个有限的、更快的、比通常的 ARM 指令更慢的指令集(编辑:参见 whobertoos 的回答),所以使用这个标志禁用它可以确保与更多(主要是较旧的)处理器的兼容性,但可能会降低你的性能对方。

于 2013-05-15T09:03:54.447 回答
1

mbrenon 在他所写的几乎所有内容中都是正确的。但是,THUMB 指令集比 ARM 指令集慢。它占用的空间更少,但速度较慢。

那个怎么样。与手臂指令相比,每个拇指指令占用一半的空间。这限制了每条指令可用的选项,例如参数、寻址模式等。这导致执行相同作业需要更多指令,并且每条指令需要一个执行周期,因此速度减慢。据估计,ARM 模式下的程序要快 30-40%,但 THUMB 模式下的程序占用的空间要少 30-40%。Thumb 是为内存有限的系统而发明的。

Thumb 模式也会影响外部存储器功率。

尽管在大多数情况下需要执行的指令更多,但在一个周期内可以获取两条指令。这是我对这个问题的理解。我不是 100% 确定这是否是完整的答案。

于 2014-04-18T09:24:01.733 回答