Я недавно изучал ассемблерный язык x86 через GNU Assembler в Ubuntu по книге «Программирование на земле» где-то в Интернете.
При создании функции всегда есть 2 раздела, которые необходимо иметь:
Вначале считается сохранить старый% ebp и установить новый указатель кадра
pushl% ebp
movl% esp,% ebp
В конце он используется для восстановления старого% ebp и всплывающего обратного адреса
movl% ebp,% esp
popl% ebp
1020 * RET *
пожалуйста, помогите мне узнать, что на самом деле происходит и для чего это нужно.
Почему они должны скопировать самый нижний указатель стека в% ebp, чтобы установить новый указатель кадра?
- И почему после копирования нужно скопировать% ebp в% esp?
- При копировании без ( )
это просто адрес?
Спасибо.