我有一个创建标签的宏,但我只想创建那些标签,如果它们尚未定义。问题是标签是使用宏参数构建的,汇编程序不喜欢使用宏参数生成的符号。这是不起作用的代码。它在ifndef上出错了。有没有其他方法可以写这个?
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
错误:行尾的垃圾,第一个无法识别的字符是`\'
答案 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
。