2014-09-06 50 views
0

我在讀一個彙編語言的書,在那裏我碰到這條線的空間分配:如何組裝`dup`操作字符串和數組

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

這是如何指導工作?這條指令是如何爲4個「堆棧」分配空間的。它是如何做到的?

回答

0

4 DUP 'stack'只是表示「字符串'stack'的4個副本」。

for (int i=0; i < 4; ++i) { 
    AllocateSpaceFor("stack"); 
} 
+1

'dup'操作數在執行期間不運行,只在彙編時進行編碼。 – Pyromaster 2014-09-07 01:17:55

+0

該答案不正確,並且給出的代碼與DUP不相同。 -1 – EJP 2014-09-07 01:47:06

4

dup指令不執行期間運行,只有在彙編時編碼。如在http://msdn.microsoft.com/en-us/library/3h2ye0a0.aspx,dup中所解釋的那樣,指定給定值的計數次數。這樣,

myvar1   db    4 dup('stack') 

...分配 'stackstackstackstack',過程中的裝配時間,而不是執行,內存地址,即myvar1