October 17 2017 05:02:03
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
ФУНКЦИОНИРОВАНИЕ ПРОЦЕССОРА В РЕАЛЬНОМ РЕЖИМЕ
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Вход процессора в режим виртуального 8086 можно осуществить в защищенном режиме двумя способами.

1. Переключение на выполнение задач, которая имеет в TSS поле EFLAGS с установленным битом VM = 1. При этом новая задача будет выполнять команды процессоров 8086 и Р6 и формировать базовые адреса, как 8086. Отметим, что переключение на задачу микропроцессора 80286 не может вызвать переход в режим V86, так как при этом из TSS загружается только 16 младших разрядов поля EFLAGS, в которые не входит бит VM.

2. Поступление команды IRET в ходе выполнения программы, которая имеет высший уровень привилегий CPL = 0, если в загружаемом при этом из стека содержимом регистра EFLAGS установлено значение бита VM=1. При других уровнях привилегий команда IRET не будет изменять значения VM, т. е. переход в режим V86 не реализуется.

Выход процессора из режима V86 может произойти только при обработке прерываний или исключений. При этом возможны два варианта.

1. В результате прерывания происходит переход на процедуру с высшим уровнем привилегий, т. е. устанавливается CPL = 0. При этом текущее состояние регистра EFLAGS заносится в стек, а бит VM сбрасывается в нуль. Таким образом, вызванная процедура будет выполняться в защищенном режиме. Если вызванная процедура имеет более низкий уровень привилегий (CPL > 0), то происходит исключение типа #GP.

2. Прерывание вызывает переключение задачи. При этом в TSS старой задачи, выполнявшейся в режиме V86, заносится текущее содержание регистров, в том числе EFLAGS с установленным битом VM = 1. Таким образом, имеется возможность вернуться к выполнению этой задачи в режиме V86. Если загружаемый при переключении задач новый TSS является сегментом 32-разрядного процессора (386,486, Pentium или Р6) со значением бита VM=0 в поле EFLAGS, то признакам в режиме EFLAGS сбрасывается в нуль, и процессор будет выполнять новую задачу в защищенном режиме.

Отметим, что команда POPF не изменяет значение флага VM, даже если она выполняется в защищенном режиме с наивысшим уровнем привилегий (CPL = 0). Эта команда не обеспечивает переход процессора в режим V86.

Таким образом, процессоры семейства Р6 в режиме V86 могут не только выполнять с более высокой производительностью программы, написанные для 8086, но и реализовывать новые прикладные программы, эффективно использующие расширенные возможности этого семейства. Следует отметить, что процессоры Р6 требуют для выполнения команд значительно меньше машинных тактов, чем 8086. Поэтому при реализации программных задержек на этих процессорах могут возникнуть значительные расхождения во времени по сравнению с реализацией на 8086.

2.7.6. ФУНКЦИОНИРОВАНИЕ ПРОЦЕССОРА В РЕАЛЬНОМ РЕЖИМЕ

В реальном режиме процессор выполняет программы, написанные для микропроцессоров 8086 (или 8088) и для реального режима микропроцессоров 80286, 80386. С точки зрения программиста, процессор Р6 в реальном режиме представляет собой более быстрый процессор 8086 с расширенным набором команд и регистров. При работе в реальном режиме все процедуры выполняются с наиболее высоким уровнем привилегий (CPL = 0) в отличие от процедур в режиме V86, для которых устанавливаются низший уровень привилегий (CPL = 3).

В реальном режиме процессор выполняет весь набор команд, за исключением команд управления ARPL, LAR, LSL, STR, LTR, SLDT, LLDT, VERR, VERW. При поступлении этих команд, которые оперируют с дескрипторами сегментов, реализуется исключение типа #UD («неправильный код операции»).

При работе в данном режиме процессор не обращается для формирования адресов к дескрипторам сегментов, а использует для образования базового адреса сегмента значение селектора, расположенного в соответствующем регистре CS, SS, DS, ES, FS или GS. Формирование физического адреса в реальном режиме иллюстрирует рис. 2.55.

Базовый адрес сегмента имеет 20 разрядов и образуется путем сдвига 16-разрядного селектора (содержимого регистра CS, SS, DS, ES, FS или GS) влево на 4 разряда. Размеры сегментов фиксированы и составляют 64 Кбайт. Допускается взаимное наложение сегментов. Линейный адрес, образованный в результате суммирования базового адреса и селектора, служит физическим адресом для выбора байта, так как в реальном режиме страничная организация не реализуется. Если полученный физический адрес выходит за границу адресуемой в реальном режиме памяти (1 Мбайт), то выполняется исключение типа #GP.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.03 секунд 2,254,299 уникальных посетителей