Ниже представлен мой код. Помоги мне понять, что означает код ниже:Что означает ebp и esp в коде разборки?
push ebp
mov ebp, esp
sub esp, 230h
Ниже представлен мой код. Помоги мне понять, что означает код ниже:Что означает ebp и esp в коде разборки?
push ebp
mov ebp, esp
sub esp, 230h
Это пролог функции.
Помещает старый указатель базы в стек, поэтому он может быть восстановлен позже:
push ebp
Назначает значение указателя стека в базовый указатель, то новый кадр стека будет создан поверх старого кадр стека:
mov ebp, esp
перемещает указатель стека далее путем уменьшения или увеличения его значения (в зависимости от того растет ли стек вниз или вверх):
sub esp, 230h
Здесь немедленное значение 230h
- это количество байтов, зарезервированных в стеке для локального использования в функции.
Аналогичным образом, функция epilogue отменяет действия пролога и возвращает управление вызывающей функции.
Проверить это связанный SO вопрос: Function Prologue and Epilogue in C
Некоторые компиляторы предлагают возможность из-за того, что не используются указатели на рамки, которые освобождают ebp для использования в качестве общего реестра (его все равно нужно будет сохранить). – rcgldr
Связанные: http://stackoverflow.com/questions/20695203/behaviour-of-ebp-and-esp-in-stacks-using-function-with-parameter – nrz
Возможный дубликат [для использования ebp в функции пролог/эпилог?] (Http://stackoverflow.com/questions/15655553/why-to-use-ebp-in-function-prologue-epilogue) –