Я запутался в начале и конце раздела GNU Assembler в объявлении функции - PullRequest
2 голосов
/ 25 мая 2011

Я недавно изучал ассемблерный язык x86 через GNU Assembler в Ubuntu по книге «Программирование на земле» где-то в Интернете.

При создании функции всегда есть 2 раздела, которые необходимо иметь:

Вначале считается сохранить старый% ebp и установить новый указатель кадра

pushl% ebp

movl% esp,% ebp

В конце он используется для восстановления старого% ebp и всплывающего обратного адреса

movl% ebp,% esp

popl% ebp

1020 * RET *

пожалуйста, помогите мне узнать, что на самом деле происходит и для чего это нужно. Почему они должны скопировать самый нижний указатель стека в% ebp, чтобы установить новый указатель кадра? - И почему после копирования нужно скопировать% ebp в% esp? - При копировании без ( ) это просто адрес?

Спасибо.

1 Ответ

0 голосов
/ 25 мая 2011

Это функция Perilogue. Часто задаваемый ответ, дающий общие сведения о перилогах функций , объясняет, что происходит, укладывает кадры и регистр указателя кадра.

...