GNU Arm 嵌入式工具链 | arm-none-eabi-gcc 选项:Thumb (-mthumb) 和 Arm (-marm) 状态有什么区别?

GNU Arm Embedded Toolchain | arm-none-eabi-gcc options: What is a difference between Thumb (-mthumb) and Arm (-marm) state?

我有一个可能微不足道的问题,但是 Thumb (-mthumb)Arm (-marm) 状态之间有什么区别以及为什么大多数教程建议使用 Thumb 状态?

我很好奇这到底是什么意思?与什么有关?

最好!

我建议阅读这两篇文章,一篇来自 Arm,Instruction Set Architecture (-marm means that GCC will generate arm32/A32 code, -mthumb means that it will generate thumb/T32 one), and this research paper, Profile Guided Selection of ARM and ThumbInstructions

基本上,这两个指令集在可用指令集及其编码方面有所不同。因此,使用 thumb/T32 应该比使用 arm/A32.

获得更小更快的可执行文件

这就是大多数教程推荐使用thumb/T32指令集的原因。