如何让GNU AS在Thumb模式编译函数块时自动回退到ARM模式?
如何让GNU ARM汇编器自动在Thumb/ARM模式间回退编译?
我在使用GNU AS编写ARM汇编代码时,了解到可以通过**Unified Syntax(统一语法)**让代码自动编译为Thumb指令,这在不少场景下能有效提升代码密度。但实际使用中经常遇到问题:部分ARM指令无法在Thumb模式下执行,导致统一语法失效,没法兼顾代码压缩和指令兼容性。
我的核心需求是:希望GNU AS在编译函数块时,能自动判断指令是否支持Thumb模式——如果遇到Thumb不支持的指令,就自动回退到ARM模式编译该部分;如果指令兼容Thumb,就保留Thumb的代码压缩优势。而且我手上有大约50000个存根函数,完全手动标注模式显然不现实。
我已经尝试过搜索相关解决方案,但一直没找到可行的办法,想请教各位有没有好的思路?
编辑补充:已实现自动回退的编译方案
感谢大家的建议,我现在已经通过Makefile实现了预期功能,具体逻辑如下:
- 首先尝试以Thumb模式编译目标文件
- 一旦检测到编译失败(因指令不支持Thumb模式),自动切换为ARM模式重新编译
虽然目前编译速度会慢一些,但完美实现了需求——既保留了Thumb模式的代码压缩效果,又能自动兼容所有ARM指令,而且完全不需要手动修改那50000个存根函数。对这个结果非常满意,再次感谢所有提供帮助的朋友!
内容的提问来源于stack exchange,提问作者Renee Cousins
相关产品推荐
相关产品推荐

