GNU汇编程序:使用宏参数创建符号

时间:2016-08-29 02:43:07

标签: macros gnu gnu-arm

我有一个创建标签的宏,但我只想创建那些标签,如果它们尚未定义。问题是标签是使用宏参数构建的,汇编程序不喜欢使用宏参数生成的符号。这是不起作用的代码。它在ifndef上出错了。有没有其他方法可以写这个?

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services

错误:行尾的垃圾,第一个无法识别的字符是`\'

1 个答案:

答案 0 :(得分:1)

我认为有两个问题。一个是\modifier:使用冒号查找名为modifier:的宏参数。您需要使用\modifier\():代替。 \()分解字符串,以便解析器知道您刚刚结束了参数的名称。

其次,最后一个.endif应为.endm

.macro create_handler modifier
  .ifndef handler\modifier
    handler\modifier\():
      .4byte 0
  .endif
.endm

create_handler foo
create_handler foo

这导致此列表(忽略行号,我将其添加到我现有的一个文件中):

  74 0010 00000000  create_handler foo
  75                create_handler foo
DEFINED SYMBOLS
  ../src/core_dict.S:74     .text:00000010 handlerfoo

如您所见,只创建了一个handlerfoo