2010-08-13 50 views
2

什麼意思lea 0x4(%esp),%ecx in在& t裝配?什麼是0x4(%esp)?裝配問題和疑問

+0

在命令標籤在這裏無關緊要:) – Bush 2015-11-30 18:17:16

回答

3

這是%esp + 0x4

LEA代表負載有效地址。在這種情況下,就是一個簡單的添加,如上所示。通常情況下,人們和編譯器不再使用它,因爲CPU現在提供了一個漂亮的地址生成單元(也稱爲AGU),它允許您使用各種花哨算法從寄存器和值計算地址。總之,無論你使用lea,你現在可以將其嵌入到其他任何指令中。

+0

呃,'lea'說明略低於10爲我現在正在處理的代碼生成的所有_all_指令的百分比。在x86上,你可以在加載或存儲操作中嵌入任何'lea'操作(我真的很懷疑這一點),但是代碼仍然充滿了指針算術,並不一定涉及加載或存儲。 – zwol 2010-08-13 23:43:33

1
lea ecx,[esp+4] 
+2

我不是那個貶低你的人,但是,你知道關於直升機飛行員和微軟技術支持的笑話嗎? – zwol 2010-08-13 23:44:59

+0

我現在要做。我認爲這個問題是關於破譯** at&t語法**的。 – 2010-08-14 13:24:28

+0

現在我需要谷歌這個笑話:) – jyz 2010-10-06 18:27:30

1

esp是堆棧指針。 0x4是偏移量。 AT & T語法有command source, destination,這裏的命令是LEA,它是「負載有效地址」。

因此,我們說的是CPU加載地址「堆棧指針+ 4」入冊「ECX」