我正在尝试为手臂组装创建宏(使用GNU工具)。
.macro FUNCTION name, attrs
.ifc \attrs\(),"global"
.global \name
.endif
// other stuff
.endm
因此可以使用FUNCTION myFunc, global
属性评估宏.global
。
但是,marcro不会处理此属性比较。简单说明.if
永远不会被评估?
有没有办法比较这种类似字符串的宏参数?
答案 0 :(得分:0)
Gas使用single quotes来表示字符串而不是双引号。
.ifc string1,string2
如果两个字符串相同,则组装以下代码部分。字符串可以可选地用单引号引用。如果未引用它们,则第一个字符串将停在第一个逗号处,第二个字符串将停止在该行的末尾。 应引用包含空格的字符串。字符串比较区分大小写。
如果没有空格或其他解析问题,例如全局,您可以直接使用该名称,而无需任何引号。所以一个可接受的解决方案是,
.macro FUNCTION name, attrs
.ifc \attrs\(),global
.global \name
.endif
// other stuff
.endm