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指令集的原因。
我有一个可能微不足道的问题,但是 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指令集的原因。