Memory 如何在asm中将内存范围推送到堆栈中?

Memory 如何在asm中将内存范围推送到堆栈中?,memory,assembly,x86,stack,nasm,Memory,Assembly,X86,Stack,Nasm,是否有将一定范围的内存推送到堆栈的选项 使用foo resd x我可以保留x个地址连续的双字 有没有一个选项可以将所有双字从addressfoo推送到addressfoo+(4*x)到堆栈中?这是汇编程序在编译时无法完成的。堆栈操作需要在运行时由代码完成。这不能由汇编程序在编译时完成。堆栈操作需要在运行时由代码完成。这取决于CPU,您还没有指定它(我猜它是x86,因为resd是nasm保留内存的方式,而nasm仅是x86) 没有x86指令可以在堆栈上推送任意数量的(d/q)字。你可以在一个循环中

是否有将一定范围的内存推送到堆栈的选项

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


有没有一个选项可以将所有双字从address
foo
推送到address
foo+(4*x)
到堆栈中?

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

这不能由汇编程序在编译时完成。堆栈操作需要在运行时由代码完成。

这取决于CPU,您还没有指定它(我猜它是x86,因为
resd
是nasm保留内存的方式,而nasm仅是x86)


没有x86指令可以在堆栈上推送任意数量的
(d/q)字。你可以在一个循环中一个接一个地推几个。或者您可以在堆栈上保留空间(通过从
(e/r)sp
)中减去),然后使用
mov
rep movsb/w/d/q
复制数据,这取决于CPU,您没有指定它(我猜它是x86,因为
resd
是nasm保留内存的方式,而nasm仅是x86)


没有x86指令可以在堆栈上推送任意数量的
(d/q)字。你可以在一个循环中一个接一个地推几个。或者您可以在堆栈上保留空间(通过从
(e/r)sp
)中减去),然后使用
mov
rep movsb/w/d/q

复制数据。我希望是这样的:
push DWORD*x foo
但是谢谢:)好吧,那太可惜了。我希望是这样:
push DWORD*x foo
但是谢谢:)