我知道LOCAL_CFLAGS是一组可选的编译器标志,在构建C源文件时会传递这些标志。我的问题是这个标志的意思是“-mno-thumb”或者我在哪里可以找到可用的LOCAL_CFLAGS列表以及它们的名称。
提前谢谢!!
答案 0 :(得分:4)
LOCAL_CFLAGS
选项位于Android.mk
文件中,等同于编译器通常用于指定编译选项的常用CFLAGS。
此类选项有吨,其中大多数的文档可以在this page from the GCC documentation的各个链接中找到。
对于-mno-thumb
选项,它会停用大多数(最近的)ARM处理器上可用的Thumb可选指令集。该指令集比通常的ARM指令有限,更快更慢(编辑:查看whobertoos的回答)指令集,因此使用此标志禁用它可确保与更多(主要是旧的)处理器兼容,但是可能会使你的表现成为对手。
答案 1 :(得分:1)
怎么样? 与手指相比,每个拇指指令占据一半的空间。这限制了每个指令可用的选项,例如参数,寻址模式等。这导致执行相同作业所需的更多指令,并且每条指令需要一个执行周期,因此减速。 据估计,ARM模式下的程序速度提高了30-40%,但THUMB模式下的程序占用的空间减少了30-40%。 Thumb是为内存限制系统而发明的。
Thumb模式也会影响外部存储器电量。
虽然在大多数情况下需要执行更多指令,但是可以在一个周期中获取两个指令。这是我对这个问题的理解。我不是百分百肯定,如果这是完整的答案。