Защищенный режим процессоров Intel


Недокументированная команда LOADALL - часть 3


Можно предложить следующий алгоритм использования команды LOADALL:

  • Запретитите прерывания.
  • Сохраните где-нибудь в буфере программы область памяти, начинающуюся с адреса 00800h и имеющую длину 102 байта.
  • Заполните буфер для команды LOADALL необходимыми значениями для всех загружаемых регистров. Базовый адрес в области кэша дескриптора сегмента данных должен указывать на необходимый вам участок расширенной памяти.
  • Выполните команду LOADALL. Сегмент данных теперь будет указывать на область расширенной памяти.
  • Выполните запись или чтение области расширенной памяти.
  • Восстановите базовый адрес сегмента данных в кэше дескриптора данных в буфре, расположенном по адресу 00800h.
  • Выполните команду LOADALL ещё раз.
  • Восстановите содержимое сохранённого ранее буфера.
  • Разрешите прерывания.

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

Команда LOADALL может выполняться в защищённом режиме в нулевом приоритетном кольце. Но, к сожалению, эту команду нельзя использовать для переключения процессора из защищённого в реальный режим.

Процессор i80387 также имеет команду LOADALL, но её код и выполняемые функции другие.




- Начало -  - Назад -  - Вперед -