Assembly 带累加器的NASM范围宏

Assembly 带累加器的NASM范围宏,assembly,nasm,Assembly,Nasm,我想调用一个宏N次,每次使用累加器,即 %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

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

%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
我试着写了以下内容(以及其中的几个变体):

我没有成功


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

解决了这个问题。删除
%[%3 i]
周围的
%[%3 i]
部分

这是在欺骗我,因为我是这样测试的:

range 1, 8, {some_partially_applied_macro %1}

实际上,在
%1
之后的末尾必须有一个逗号,否则NASM不能正确地展开它(它不认为它是一个正确的逗号分隔宏)。

我不明白您打算做什么。
%[%3 i]
扩展到什么?您可以编辑您的问题以使预期的输出更清晰吗?第二个宏(
foo 1
)的内部部分是我想要的范围,在上面输入的情况下可以扩展。很抱歉,Kvanberendock,我仍然不明白。我不是一个非常老练的宏用户。我是否知道“range”的第三个参数是“partially applied”(?)宏的名称?你的变量“i”就是你所说的“累加器”吗?当您说“部分应用”时,您的意思是多次调用变量(%2)的“内部宏”吗?每次使用与“范围”的第一个参数相同的第一个参数和“i”的第二个参数时,部分应用的是功能术语,抱歉。但是,为了简单起见,我希望第三个参数
range
在累加器之前被飞溅。原因是我可能想指定另一个宏的前两个参数(“部分应用”),然后将累加器作为第三个参数。因此,如果第三个参数是
foobar3
,我希望它输出
foobar3 1
foobar3 2
<代码>foo bar 3 N。这有点让人困惑。你能发布一个更完整的例子吗?
range 1, 8, {some_partially_applied_macro %1}