比较 gnu asm (gas) 中的宏参数
Comparing macro parameters in gnu asm (gas)
我正在尝试为 arm 汇编创建宏(使用 GNU 工具)。
.macro FUNCTION name, attrs
.ifc \attrs\(),"global"
.global \name
.endif
// other stuff
.endm
所以宏 FUNCTION myFunc, global
可以用 .global
属性求值。
但是,宏不处理此属性比较。简单地说 .if
从未被评估过?
有没有办法比较这种类似字符串的宏参数?
Gas 使用 single quotes 来表示字符串而不是双引号。
.ifc string1,string2
Assembles the following section of code if the two strings are the same. The strings may be optionally quoted with single quotes. If they are not quoted, the first string stops at the first comma, and the second string stops at the end of the line. Strings which contain whitespace should be quoted. The string comparison is case sensitive.
如果没有空格或其他解析问题,与 global 一样,您可以直接使用名称而不用任何引号。所以一个可接受的解决方案是,
.macro FUNCTION name, attrs
.ifc \attrs\(),global
.global \name
.endif
// other stuff
.endm
我正在尝试为 arm 汇编创建宏(使用 GNU 工具)。
.macro FUNCTION name, attrs
.ifc \attrs\(),"global"
.global \name
.endif
// other stuff
.endm
所以宏 FUNCTION myFunc, global
可以用 .global
属性求值。
但是,宏不处理此属性比较。简单地说 .if
从未被评估过?
有没有办法比较这种类似字符串的宏参数?
Gas 使用 single quotes 来表示字符串而不是双引号。
.ifc string1,string2
Assembles the following section of code if the two strings are the same. The strings may be optionally quoted with single quotes. If they are not quoted, the first string stops at the first comma, and the second string stops at the end of the line. Strings which contain whitespace should be quoted. The string comparison is case sensitive.
如果没有空格或其他解析问题,与 global 一样,您可以直接使用名称而不用任何引号。所以一个可接受的解决方案是,
.macro FUNCTION name, attrs
.ifc \attrs\(),global
.global \name
.endif
// other stuff
.endm