Что такое функциональные эпилоги и прологи? - PullRequest
5 голосов
/ 12 июля 2010

При чтении некоторых соглашений о вызовах в архитектуре процессора я читаю что-то вроде

«Эпилог и пролог», когда функция вызывается из другой функции.

Что такое пролог или эпилог функции?

Ответы [ 2 ]

8 голосов
/ 12 июля 2010

Эпилог и пролог функции - это просто набор инструкций, которые «устанавливают» контекст для функции при ее вызове и очищают при ее возврате.

Пролог обычно выполняет такие задачи как:

  • сохраняет все регистры, которые может использовать функция (которые требуются стандартом платформы для сохранения при вызове функций)
  • выделяет в стеке память, которая может потребоваться функции для локальных переменных
  • устанавливает любой указатель (или другую связь) на параметры, которые могут быть переданы в стек

Эпилогу обычно требуется только восстановить любые регистры сохранения и восстановить указатель стека, чтобы любая память, зарезервированная функцией для ее собственного использования, была «освобождена».

Точные механизмы, которые могут использоваться в прологе / эпилоге, зависят от архитектуры ЦП, стандарта платформ, аргументов и возвращаемых значений функции и конкретного соглашения о вызовах, которое может использовать функция.

2 голосов
/ 12 июля 2010

Wikipedia FTW: https://en.wikipedia.org/wiki/Function_prologue

По-моему, это объясняет это довольно хорошо.Если есть что-то неясное, дайте мне знать, и я могу попытаться прояснить ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...