如何展开ARM汇编中的宏?gcc -E工具无法生效求解决方案
解决ARM汇编宏展开问题
gcc -E是用来处理C/C++代码预处理的,对ARM汇编里的宏支持不好——因为汇编宏是由GNU汇编器(gas)负责处理的,不属于gcc的C预处理器范畴。
要正确展开汇编宏,用下面两种方法就行:
直接用GNU汇编器的预处理选项:
假设你的汇编文件是test.s,执行命令:as -E test.s -o test_preprocessed.s生成的
test_preprocessed.s文件里,宏调用会被完全展开。用gcc指定处理汇编代码:
同样针对test.s,执行:gcc -x assembler -E test.s -o test_preprocessed.s这个命令会让gcc调用gas的预处理逻辑,效果和上面一致。
举个实际例子,比如你的宏定义:
.macro f x,y mov r0, \x add r0, r0, \y .endm f x10,x11
经过预处理后,会被展开成:
mov r0, x10 add r0, r0, x11
内容的提问来源于stack exchange,提问作者aqjune
相关产品推荐
相关产品推荐

