程序集`dup`运算符如何为字符串和数组分配空间

时间:2014-09-06 19:10:58

标签: assembly masm masm32

我正在阅读汇编语言书籍,在那里我遇到了这一行:

Byte 4 dup('stack')        ;20bytes: "stackstackstackstack"

这条指令如何运作?该指令如何为4“堆栈”分配空间。它是如何做到的?

2 个答案:

答案 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");
}