ВУЗ:
Составители:
33
В процессоре для каждого из сегментных регистров имеется так
называемый теневой регистр дескриптора, который имеет формат
дескриптора (рисунок 1.11). Теневые регистры недоступны программисту.
Они автоматически загружаются процессором из таблицы дескрипторов
каждый раз, когда процессор загружает соответствующий сегментный ре-
гистр. Таким образом, в защищенном режиме программист имеет дело с
селекторами, т.е. номерами дескрипторов, а процессор – с самими
дескрипторами, хранящимися в теневых регистрах. Именно содержимое
теневого регистра (в первую очередь, линейный адрес сегмента)
определяет область памяти, к которой обращается процессор при
выполнении конкретной команды.
В реальном режиме теневые регистры заполняются не из таблицы
дескрипторов, а непосредственно самим процессором. В частности,
процессор заполняет поле базы каждого теневого регистра линейным
базовым адресом сегмента, полученным путем умножения на 16
содержимого сегментного регистра, как это и положено в реальном
режиме. Поэтому после перехода в защищенный режим в теневых
регистрах находятся правильные линейные базовые адреса, и программа
будет выполняться правильно, хотя с точки зрения правил адресации
защищенного режима содержимое сегментных регистров лишено смысла.
Тем не менее, после перехода в защищенный режим, прежде всего,
следует загрузить в используемые сегментные регистры (и, в частности, в
регистр CS) селекторы соответствующих сегментов. Это позволит
процессору правильно заполнить все поля теневых регистров из таблицы
дескрипторов. Пока эта операция не выполнена, некоторые поля теневых
регистров (в частности, границы сегментов) могут содержать неверную
информацию.
Загрузить селекторы в сегментные регистры DS, SS и ES не
представляет труда (строки 93 – 101). Но как загрузить селектор в регистр
В процессоре для каждого из сегментных регистров имеется так называемый теневой регистр дескриптора, который имеет формат дескриптора (рисунок 1.11). Теневые регистры недоступны программисту. Они автоматически загружаются процессором из таблицы дескрипторов каждый раз, когда процессор загружает соответствующий сегментный ре- гистр. Таким образом, в защищенном режиме программист имеет дело с селекторами, т.е. номерами дескрипторов, а процессор – с самими дескрипторами, хранящимися в теневых регистрах. Именно содержимое теневого регистра (в первую очередь, линейный адрес сегмента) определяет область памяти, к которой обращается процессор при выполнении конкретной команды. В реальном режиме теневые регистры заполняются не из таблицы дескрипторов, а непосредственно самим процессором. В частности, процессор заполняет поле базы каждого теневого регистра линейным базовым адресом сегмента, полученным путем умножения на 16 содержимого сегментного регистра, как это и положено в реальном режиме. Поэтому после перехода в защищенный режим в теневых регистрах находятся правильные линейные базовые адреса, и программа будет выполняться правильно, хотя с точки зрения правил адресации защищенного режима содержимое сегментных регистров лишено смысла. Тем не менее, после перехода в защищенный режим, прежде всего, следует загрузить в используемые сегментные регистры (и, в частности, в регистр CS) селекторы соответствующих сегментов. Это позволит процессору правильно заполнить все поля теневых регистров из таблицы дескрипторов. Пока эта операция не выполнена, некоторые поля теневых регистров (в частности, границы сегментов) могут содержать неверную информацию. Загрузить селекторы в сегментные регистры DS, SS и ES не представляет труда (строки 93 – 101). Но как загрузить селектор в регистр 33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »