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

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

"эпилог и пролог", когда функция вызвана от другой функции.

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

5
задан Michael Petch 6 December 2016 в 01:10
поделиться

2 ответа

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

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

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

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

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

9
ответ дан 13 December 2019 в 19:20
поделиться

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

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

2
ответ дан 13 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: