Оглавление Об учебном пособии
Использованные источники1 Использованные источники2 Использованные источники3 Использованные источники4 Использованные источники5 Использованные источники6

Вторая форма команды возврата RET n производит удаление из стека n байт. Она необходима в том случае, когда при вызове процедуры передавались параметры (содержимое поля счетчика двойных слов WC в шлюзе вызова не равно нулю).

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

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

Возврат из подпрограмм на основную программу по командам RET, RET n и IRET не использует шлюзы. Если процедура вызова использовала механизм передачи управления, то обработчиком перехода является кодовый сегмент. Выполняемые при возврате действия аналогичны действиям при вызове, но в обратном порядке:

  • из стека процедуры извлекается адрес возврата CS:EIP;
  • если выполняется команда RET n, то производится инкремент регистра ESP на n для удаления параметров из стека процедуры;
  • из стека процедуры извлекается указатель старого стека SS:ESP.
<< Назад