我正在阅读汇编语言书籍,在那里我遇到了这一行:
Byte 4 dup('stack') ;20bytes: "stackstackstackstack"
这条指令如何运作?该指令如何为4“堆栈”分配空间。它是如何做到的?
答案 0 :(得分:4)
dup
指令在执行期间不运行,仅在汇编时编码。如http://msdn.microsoft.com/en-us/library/3h2ye0a0.aspx中所述,dup
指定给定值的声明计数。这样,
myvar1 db 4 dup('stack')
...在汇编时间内分配'stackstackstackstack',而不是执行,分配到内存地址,即myvar1
。
答案 1 :(得分:0)
4 DUP 'stack'
仅表示“字符串'stack'
”的4个副本。
for (int i=0; i < 4; ++i) {
AllocateSpaceFor("stack");
}