NASM范围宏与累加器

时间:2014-03-07 22:56:14

标签: assembly nasm

我想每次使用累加器调用一次宏,即;

%macro foo 1
range 1, 8, {some_partially_applied_macro %1}
%endmacro

相当于

%macro foo 1
some_partially_applied_macro %1, 1
some_partially_applied_macro %1, 2
some_partially_applied_macro %1, 3
...
some_partially_applied_macro %1, 8
%endmacro

我尝试写下面的内容(及其几种变体):

%macro range 3
%assign i %1
%rep %2
%[%3 i]
%assign i i+1
%endrep
%endmacro

我没有成功。

需要注意的一点是,第三个参数可能需要部分应用。

1 个答案:

答案 0 :(得分:5)

想出来。移除%[...]周围的%[%3 i]部分。

这是欺骗我,因为我正在测试它:

range 1, 8, {some_partially_applied_macro %1}

实际上必须在%1之后最后使用逗号,或者NASM没有正确扩展它(它不会将其视为正确的逗号分隔宏)。