2014-10-31 7 views
-3

Ниже представлен мой код. Помоги мне понять, что означает код ниже:Что означает ebp и esp в коде разборки?

push ebp 
    mov  ebp, esp 
    sub  esp, 230h 
+0

Связанные: http://stackoverflow.com/questions/20695203/behaviour-of-ebp-and-esp-in-stacks-using-function-with-parameter – nrz

+0

Возможный дубликат [для использования ebp в функции пролог/эпилог?] (Http://stackoverflow.com/questions/15655553/why-to-use-ebp-in-function-prologue-epilogue) –

ответ

1

Это пролог функции.

Помещает старый указатель базы в стек, поэтому он может быть восстановлен позже:

push ebp 

Назначает значение указателя стека в базовый указатель, то новый кадр стека будет создан поверх старого кадр стека:

mov  ebp, esp 

перемещает указатель стека далее путем уменьшения или увеличения его значения (в зависимости от того растет ли стек вниз или вверх):

sub  esp, 230h 

Здесь немедленное значение 230h - это количество байтов, зарезервированных в стеке для локального использования в функции.

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

Проверить это связанный SO вопрос: Function Prologue and Epilogue in C

+0

Некоторые компиляторы предлагают возможность из-за того, что не используются указатели на рамки, которые освобождают ebp для использования в качестве общего реестра (его все равно нужно будет сохранить). – rcgldr

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

  • Нет связанных вопросов^_^