它說,「離開」指令類似:大會86 - 「離開」指令
movl %ebp, %esp
popl %ebp
我明白movl %ebp, %esp
的一部分,它的作用是釋放存儲內存(如this question討論) 。
但是popl %ebp
代碼的目的是什麼?
它說,「離開」指令類似:大會86 - 「離開」指令
movl %ebp, %esp
popl %ebp
我明白movl %ebp, %esp
的一部分,它的作用是釋放存儲內存(如this question討論) 。
但是popl %ebp
代碼的目的是什麼?
LEAVE
是ENTER
的對應物。所述ENTER
指令由第一推EBP
到堆棧中,然後複製到ESP
EBP
建立一個堆棧幀,所以LEAVE
具有做相反,即複製EBP
到ESP
,然後恢復舊EBP
從堆棧。
見命名程序段中的調用塊結構語言在Intel's Software Developer's Manual第1卷,如果你想了解更多關於如何ENTER
和LEAVE
工作。
看來我不理解EBP和ESP的概念。你能爲我解釋這兩個條款嗎? – alexswo
'EBP'和'ESP'都只是32位通用寄存器。雖然'ESP'有一個特殊的函數,它作爲堆棧指針,並且通過某些指令(例如'push','pop','call')被隱式修改。按照約定,「EBP」通常用作函數內的堆棧幀指針。 – Michael
[在分解代碼中的ebp和esp是什麼意思?](http://stackoverflow.com/questions/26684506/what-does-ebp-and-esp-in-a-dissembly-code-means)[什麼是ESP和EBP註冊?](http://stackoverflow.com/questions/21718397/what-are-the-esp-and-the-ebp-registers?rq=1) –
它彈出'ebp'。 – immibis
「重複問題」實際上並不回答這個問題;投票重新開放...... – immibis