比较gnu asm(gas)

时间:2017-03-03 00:20:16

标签: arm gas

我正在尝试为手臂组装创建宏(使用GNU工具)。

.macro FUNCTION     name, attrs
    .ifc    \attrs\(),"global"
        .global         \name
    .endif

    // other stuff
.endm

因此可以使用FUNCTION myFunc, global属性评估宏.global。 但是,marcro不会处理此属性比较。简单说明.if永远不会被评估?

有没有办法比较这种类似字符串的宏参数?

1 个答案:

答案 0 :(得分:0)

Gas使用single quotes来表示字符串而不是双引号。

  

.ifc string1,string2

     

如果两个字符串相同,则组装以下代码部分。字符串可以可选地用单引号引用。如果未引用它们,则第一个字符串将停在第一个逗号处,第二个字符串将停止在该行的末尾。 应引用包含空格的字符串。字符串比较区分大小写。

如果没有空格或其他解析问题,例如全局,您可以直接使用该名称,而无需任何引号。所以一个可接受的解决方案是,

.macro FUNCTION     name, attrs
    .ifc    \attrs\(),global
        .global         \name
    .endif

    // other stuff
.endm