Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
777.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
6.49 Mб
Скачать
  1. 48. Регистровая память компьютера и её назначение. Типы регистров процессора в реальном режиме. Дополнительные регистры защищённого режима.

В современных микропроцессорах типа, например, Pentium, можно выделить часть (мы назвали ее МП 86), предназначенную для использования в реальном режиме и практически соответствующую процессору 8086. Ниже, используя термин "процессор", мы будем иметь в виду именно МП 86. Процессор содержит двенадцать 16-разрядных программно-адресуемых регистров, которые принято объединять в три группы: регистры данных, регистры-указатели и сегментные регистры. Регистры данных и регистры-указатели часто объединяют под общим названием "регистры общего назначения". Кроме того, в состав процессора входят указатель команд и регистр флагов.

В группу регистров данных включаются четыре регистра АХ, ВХ, СХ и DX. Программист может использовать их по своему усмотрению для временного хранения любых объектов (данных или адресов) и выполнения над ними требуемых операций. При этом регистры допускают независимое обращение к старшим (АН, ВН, СН и DH) и младшим (AL, BL, CL и DL) половинам. Так, команда mov BL, АН пересылает старший байт регистра АХ в младший байт регистра ВХ, не затрагивая при этом вторых байтов этих регистров. Заметьте, что сначала указывается операнд-приемник, а после запятой - .операнд-источник, т.е. команда как бы выполняется справа налево.

В защищенном режиме работы определение физического адреса осуществляется совершенно иначе. Прежде всего, используется сегментный механизм для организации виртуальной памяти. При этом адреса задаются 32-битовыми значениями. Кроме этого, возможна страничная трансляция адресов, также с 32-битовыми значениями. Наконец, при работе в защищенном режиме, который по умолчанию предполагает 32-битовый код, возможно исполнение двоичных программ, созданных для работы микропроцессора в 16-битовом режиме. Для этого введен режим виртуальной 16-битовой машины и 20-битовые адреса реального режима транслируются с помощью страничного механизма в 32-битовые значения защищенного режима. Наконец, есть еще один режим -- 16-битовый защищенный, позволяющий 32-битовым микропроцессорам выполнять защищенный 16-битовый код, который был характерен для микропроцессора 80286. Правда, следует отметить, что это последний режим практически не используется, поскольку программ, созданных для него, не так уж и много.      Для изучения этих возможностей рассмотрим сначала новые архитектурные возможности микропроцессоров i80x86.

Новые системные регистры микропроцессоров i80x86

    Основные регистры микропроцессора i80x86, знание которых необходимо для понимания защищенного режима работы, приведены на рис. 3.2. Следует обратить внимание на следующее:

  • указатель команды EIP -- 32 битовый регистр, младшие 16 разрядов этого регистра есть регистр IP;

  • регистр флагов EFLAGS -- 32 бита, младшие 16 разрядов представляют регистр FLAGS;

  • регистры общего назначения EAX, EBX, ECX, EDX, а также ESP, EBP, ESI, EDI -- 32-битовые, однако их младшие 16 разрядов представляют собой известные регистры AX, BX, CX, DX, SP, BP, SI, DI;

  • сегментные регистры CS, SS, DS, ES, FS, GS -- 16-битовые. При каждом из регистров CS, SS, DS, ES, FS, GS изображены пунктиром скрытые от программистов (недоступны никому, кроме собственно микропроцессора) 64-битовые регистры, в которые загружаются дескрипторы соответствующих сегментов;

  • регистр-указатель на локальную таблицу сегментов текущей задачи-- LDTR (16 битов). При этом регистре также имеется "теневой" (скрытый от программиста) 64-битовый регистр, в который микропроцессор заносит дескриптор, указывающий на таблицу дескрипторов сегментов задачи, описывающих ее локальное виртуальное адресное пространство;

  • регистр-указатель задачи TR (16 битов). Указывает на дескриптор в глобальной таблице дескрипторов, позволяющий получить доступ к дескриптору задачи TSS -- информационной структуре, которую поддерживает микропроцессор для управления задачами;

  • регистр GDTR (48 битов) глобальной таблицы GDT, содержащей как дескрипторы общих сегментов, так и специальные системные дескрипторы. В частности, в GDTR находятся дескрипторы, с помощь которых можно получить доступ к сегментам TSS;

  • регистр IDTR (48 битов) таблицы дескрипторов прерываний. Содержит информацию, необходимую для доступа к "таблице прерываний" IDT;

  • управляющие регистры CR0 -- CR3 (32-битовые) и некоторые другие регистры.

Основные системные регистры микропроцессоров i80x86

    Управляющий регистр CR0 содержит целый ряд флагов, которые определяют режимы работы микропроцессора. Подробно об этих флагах можно прочитать в книгах [2, 22, 48]. Мы же просто ограничимся тем фактом, что самый младший бит (PE, protect enable) этого регистра определяет режим работы процессора. При PE=0 процессор функционирует в реальном режиме работы, а при единичном значении микропроцессор переключается в защищенный режим. Самый старший бит регистра CR0 (бит PG, paging) определяет, включен (PG=1) или нет (PG=0) режим страничного преобразования адресов.      Регистр CR2 предназначен для размещения в нем адреса подпрограммы обработки страничного исключения, то есть в случае использования страничного механизма отображения памяти обращение к отсутствующей странице будет вызывать переход на соответствующую подпрограмму диспетчера памяти, и для определения этой подпрограммы будет задействован регистр CR2.      Регистр CR3 содержит номер физической страницы, в которой располагается таблица каталогов таблиц страниц текущей задачи. Очевидно, что, приписав к этому номеру нули, мы попадем на начало этой страницы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]