2015-04-22 2 views
6

Говорят, что «оставить» инструкция аналогична:x86 Сборка - «оставить» Инструкция

movl %ebp, %esp 
popl %ebp 

Я понимаю, в movl %ebp, %esp части, и что он действует релиз хранится память (как описано в this question) ,

Но какова цель кода popl %ebp?

+3

Это всплывает 'ebp'. – immibis

+0

«Дублирующий вопрос» на самом деле не отвечает на этот вопрос; голосование для повторного открытия ... – immibis

ответ

13

LEAVE является аналогом ENTER. ENTER инструкция устанавливает кадр стека на первый толкая EBP в стек и затем копирует ESP в EBP, так LEAVE должен делать противоположное, т.е. скопировать EBP в ESP, а затем восстановить старый EBP из стека.

Смотрите раздел с именем ПРОЦЕДУРЫ ПРИЗЫВАЕТ блочно-ЯЗЫКИ в Intel's Software Developer's Manual Томе 1, если вы хотите узнать больше о том, как ENTER и LEAVE работе.

+0

Похоже, я не понимаю концепции EBP и ESP. Не могли бы вы объяснить мне оба этих термина? – alexswo

+0

'EBP' и' ESP' являются одновременно 32-разрядными универсальными регистрами. Хотя 'ESP' имеет специальную функцию, которая должна действовать как указатель стека, и она неявно изменяется некоторыми инструкциями (например,' push', 'pop',' call'). «EBP» по соглашению обычно используется как указатель фрейма стека внутри функций. – Michael

+0

[Что означает 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) –

Смежные вопросы