NASM %rep 部分中的标签

Ram*_*mes 4 assembly preprocessor nasm

我有%rep一个预处理器指令,它创建一个预处理器循环。我想在其中声明标签,可能带有一些串联,但我无法获得正确的语法。

%assign i 0 
%rep    64 
   label_%i: ;this, of course, doesn't work
      inc rax    
%assign i i+1 
%endrep
Run Code Online (Sandbox Code Playgroud)

那么如何强制 NASM 预处理器label_i为每次“迭代”生成呢?

Dav*_*zer 5

这可以通过使用符号来完成%+。以下是文档的摘录:

4.1.4 连接单行宏标记:%+

单行宏中的各个标记可以连接起来,以生成更长的标记以供以后处理。如果有多个执行相似功能的相似宏,这会很有用。

请注意,%+ 之后需要一个空格,以便将其与多行宏中使用的语法 %+1 消除歧义。

有关此功能以及预处理器中其他功能的更多信息可以在此处找到。