【发布时间】:2018-09-18 17:16:48
【问题描述】:
我想写一个基于 N 个标记列表的 nasm 循环,其中某个变量依次获取每个标记的值。
类似:
%for reg in {rax, rbx, rcx, rdx, rsi, rdi}
push reg
%endfor
生成:
push rax
push rbx
...
push rdi
当然,%for 实际上并不存在:它只是一个虚构的伪指令,显示我想要什么。有什么方法可以相对优雅地做到这一点?
【问题讨论】:
-
@tkausl - 好的,谢谢。我认为这不允许我“就地”编写这样一个循环:我会将每个循环的特定代码提取到一个宏中(例如,一个特定于
push的宏),然后用我想要的任何参数列表调用它对吧? -
正确。您甚至可以编写另一个第二个宏
%pusha,例如,用所有寄存器调用%push,这样您就不需要每次都手动列出它们,基本上模仿 x64 的pushad指令。