Gnu汇编程序:评估宏参数中的符号?

问题描述 投票:0回答:1

在GNU汇编程序(v。2.31.1)中,我想将.equ(或.set)设置的符号传递给宏。以ARM为例,我想将整数符号转换为字符串:

.equ WIDTH, 100

.macro numToString label, num
\label :
.asciz "\num"
.equ \label\()Len, .-\label
.endm

numToString xyzWidthStr, WIDTH

但是,这会导致以空终止的字符串“ WIDTH”而不是“ 100”的标签为“ xyzWidthStr”。有没有一种方法可以在使用宏之前强制宏对其进行评估/替代?

macros gas
1个回答
0
投票

是否有一种方法可以强制宏在使用参数之前对其进行求值/替换?

您可以在需要时使用C预处理程序来解决它

#define WIDTH 100

与arm-gcc组装(不是arm-as)。如果文件扩展名是.S.sx,则gcc将在汇编文件之前调用C预处理程序。如果您使用其他扩展名,则可以

arm-gcc -x assembler-with-cpp code.asm <options>

如果要查看中间的预处理代码,请将-save-temps添加到<options>。 gcc将其保存到code.s

© www.soinside.com 2019 - 2024. All rights reserved.