Пролог-эпилог функций Си

Рейтинг: 2Ответов: 1Опубликовано: 23.03.2011

Столкнулся с оптимизацией кода (Си, очень ограниченное количество памяти). Для обработки прерываний используются функции с атрибутом _ naked _, который (по документации) подавляет генерацию пролога и эпилога функции. Раньше никогда не задумывался над этим. Можете пояснить зачем это? И в чем вообще суть пролога-эпилога?

Ответы

▲ 6Принят

Пролог сохраняет контекст исполнения - те данные (флаги, регистры процессора и т.п.), которые могут быть изменены вызываемой функцией. А эпилог восстанавливает контекст, используя сохраненные данные.

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

Еще по теме: пролог и эпилог.