2015-04-22 11 views
6

Mówi się, że dyspozycja „zostaw” jest podobny do:Zgromadzenie x86 - „zostawić” Instruction

movl %ebp, %esp 
popl %ebp 

Rozumiem movl %ebp, %esp strony, a to, że działa w celu uwolnienia przechowywane pamięć (jak omówiono w this question) .

Ale jaki jest cel kodu popl %ebp?

+3

Wyskakuje 'ebp'. – immibis

+0

"Duplikat pytania" nie odpowiada na to pytanie; głosowanie na ponowne otwarcie ... – immibis

Odpowiedz

13

LEAVE jest odpowiednikiem ENTER. Instrukcja ENTER konfiguruje ramkę stosu najpierw popychając EBP na stos i kopie ESP do EBP tak LEAVE musi coś przeciwnego, to znaczy, aby skopiować EBPESP a następnie przywrócić stare EBP ze stosu.

Patrz sekcja o nazwie PROCEDURA WZYWA DO BLOKU strukturze JĘZYKÓW w Intel's Software Developer's Manual Vol 1, jeśli chcesz dowiedzieć się więcej na temat ENTER i LEAVE pracy.

+0

Wygląda na to, że nie rozumiem koncepcji EBP i ESP. Czy mógłbyś wyjaśnić mi oba te warunki? – alexswo

+0

'EBP' i' ESP' to tylko 32-bitowe rejestry ogólnego przeznaczenia. Chociaż 'ESP' ma specjalną funkcję, która ma pełnić rolę wskaźnika stosu, i jest niejawnie modyfikowana przez pewne instrukcje (na przykład' push', 'pop',' call'). 'EBP' przez konwencję jest zwykle używane jako wskaźnik ramki stosu w funkcjach. – Michael

+0

[Co oznacza ebp i esp w kodzie demontażu?] (Http://stackoverflow.com/questions/26684506/what-does-ebp-and-esp-in-a-dissembly-code-means) [Czym są rejestrów ESP i EBP?] (http://stackoverflow.com/questions/21718397/what-are-t-esp-and-the-ebp-registers?rq=1) –