是否可以选择将一系列内存推送到堆栈?
使用foo resd x
我可以保留x个双字,其地址是连续的。
是否可以选择将所有双字从地址foo
推送到地址foo+(4*x)
到堆栈?
答案 0 :(得分:3)
这取决于CPU而你没有指定它(我猜它是x86因为resd
是nasm保留内存的方法而nasm只是x86)。
没有x86指令可以在堆栈上推送任意数量的(d/q)words
。您可以在循环中逐个推送其中的几个。或者您可以在堆栈上预留空间(通过减去(e/r)sp
),然后使用mov
或rep movsb/w/d/q
复制数据。
答案 1 :(得分:0)
编译时汇编程序无法完成此操作。堆栈操作需要在运行时由代码完成。