Отладка приложений



              

Общая последовательность: вход и выход из функции - часть 2


Этот эпилог соответствует указанному выше прологу.

_asm 

{

// Стандартный демонтаж эпилога

MOV ESP , ЕВР // Восстановить стековое значение.

POP EBP // Восстановить сохраненное значение регистра -.

// стекового кадра. 

}

В выпускных построениях инструкция LEAVE выполняется быстрее, чем последовательности MOV/POP, так что в их эпилогах можно найти только инструкцию LEAVE. Она идентична последовательности MOV/POP. В отладочных построениях компиляторы по умолчанию используют последовательности MOV/POP. Интересно, что CPU х86 для установки пролога имеют соответствующую инструкцию — ENTER, но она медленнее, чем последовательность PUSH/MOV/ADD, так что компиляторы ее не применяют.

Выбор компиляторами способа генерации кода во многом зависит от того, как оптимизирована программа — по скорости или по размеру. Если установлена оптимизация по размеру, как было настоятельно рекомендовано в главе 2, большинство функций преимущественно используют стандартные стековые кадры. Оптимизация по скорости приводит к более сложной FPO-генерации.

 FPO (Frame Pointer Omission — пропуск указателя кадра). — Пер.




Содержание  Назад  Вперед