如何在asm中将一系列内存推送到堆栈?

时间:2012-02-12 20:06:25

标签: memory assembly x86 stack nasm

是否可以选择将一系列内存推送到堆栈?

使用foo resd x我可以保留x个双字,其地址是连续的。

是否可以选择将所有双字从地址foo推送到地址foo+(4*x)到堆栈?

2 个答案:

答案 0 :(得分:3)

这取决于CPU而你没有指定它(我猜它是x86因为resd是nasm保留内存的方法而nasm只是x86)。

没有x86指令可以在堆栈上推送任意数量的(d/q)words。您可以在循环中逐个推送其中的几个。或者您可以在堆栈上预留空间(通过减去(e/r)sp),然后使用movrep movsb/w/d/q复制数据。

答案 1 :(得分:0)

编译时汇编程序无法完成此操作。堆栈操作需要在运行时由代码完成。