2012-02-17 44 views
0

同時檢查的wget的組裝我看到了這一點,這是封隔器的開始,我認爲:對齊8是否使inc命令爲8步?

UPX1:004ED812     align 8 
UPX1:004ED818 
UPX1:004ED818 loc_4ED818:        ; CODE XREF: UPX1:loc_4ED829j 
UPX1:004ED818     mov  al, [esi] 
UPX1:004ED81A     inc  esi 
UPX1:004ED81B     mov  [edi], al 
UPX1:004ED81D     inc  edi 

我的問題是:是否align 8使INC esi由8遞增每次迭代中,這意味着一個字節?

回答

3

INC增加1,否則地獄肯定會鬆動。

更具體地說,我找不到當前彙編語言的任何體面的文檔。但是,我確實發現了這個reference。據此,align指令只是控制下一條指令操作碼在內存中的對齊方式。

這樣做很有意義。

+0

+1鬆散地獄 – hirschhornsalz 2012-03-08 07:17:51

1

INC R是完全一樣的ADD R,1

調準8指令使得的INC的R 8。這的倍數地址是由編譯器插入的優化,以確保跳轉或調用的目標落在高速緩存行的開始處,因此可以更高效地填充處理器的流水線。

+1

這是**不完全相同。 「INC」總是保留「CF」標誌的狀態,而「ADD」總是根據結果覆蓋它。 – 2012-03-07 22:53:55