Эпилог и пролог функции - это просто набор инструкций, которые «устанавливают» контекст для функции при ее вызове и очищают при ее возврате.
Пролог обычно выполняет такие задачи как:
- сохраняет все регистры, которые может использовать функция (которые требуются стандартом платформы для сохранения при вызове функций)
- выделяет в стеке память, которая может потребоваться функции для локальных переменных
- устанавливает любой указатель (или другую связь) на параметры, которые могут быть переданы в стек
Эпилогу обычно требуется только восстановить любые регистры сохранения и восстановить указатель стека, чтобы любая память, зарезервированная функцией для ее собственного использования, была «освобождена».
Точные механизмы, которые могут использоваться в прологе / эпилоге, зависят от архитектуры ЦП, стандарта платформ, аргументов и возвращаемых значений функции и конкретного соглашения о вызовах, которое может использовать функция.