Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программно доступные регистры



Программно доступными регистрами процессора называются регистры, содержимое которых используется командами процессора. Регистры процессора Pentium можно разделить на следующие группы:

• регистры общего назначения;

• сегментные регистры;

• регистр указателя команды и регистр флагов;

• управляющие регистры;

• регистры системных адресов;

• отладочные регистры;

Регистры общего назначения (рис. 1.1) являются 32-разрядными. При этом для сохранения совместимости с младшими моделями поддерживается структура регистров процессоров 8086 и 80286, действительны все наименования, применявшиеся для обозначения 16- и 8-разрядных регистров. Например, для моделей процессоров старше 80386 все следующие команды являются допустимыми:

MOV EAX,0

MOV AX,0

MOV AH,0

MOV AL,0

31 16 15 8 7 0

  AX EAX
  AH AL  
  BX EBX
  BH BL  
  CX ECX
  CH CL  
  DX EDX
  DH DL  
  SI ESI
  DI EDI
  BP EBP
  SP ESP

Рис.1.1. Регистры общего назначения

Сегментные регистры имеют размер 16 разрядов и определяют адрес памяти, с которого начинается соответствующий сегмент.

CS – сегментный регистр кода (Code Segment). Определяет текущий сегмент, который содержит машинные команды, образующие собственно программу и именуемые кодом.

SS – сегментный регистр стека (Stack Segment). Задает текущий сегмент стека, область памяти, в которой выполняются стековые операции.

DS – сегментный регистр данных (Data Segment). Определяет основной сегмент, содержащий данные текущей программы.

ES, FS, GS – сегментные регистры, определяющие дополнительные сегменты данных, доступные текущей программе.

В режиме реального адреса содержимое сегментного регистра умножается на 16, в результате чего получается начальный физический адрес сегмента. В защищенном режиме содержимое сегментного регистра называется селектором.Формат селектора представлен на рис.1.2.

15 2 1 0

Индекс TI RPL

Рис.1.2. Формат селектора

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

Селектор имеет следующие поля:

Биты 15-3 содержат индекс дескриптора. Индекс выбирает один из 8192 дескрипторов в таблице дескрипторов. Процессор умножает значение этого индекса на восемь (длину дескриптора) и добавляет результат к базовому адресу таблицы дескрипторов. Это обеспечивает правильный вход в таблицу.

Бит 2 (TI) определяет таблицу дескрипторов, на которую ссылается селектор: нуль означает таблицу глобальных дескрипторов (GDT), а единица - текущую таблицу локальных дескрипторов (LDT).

Биты 1-0 (RPL) определяют запрашиваемый уровень привилегий.

Регистр указателя команды имеет размер 32 разряда и называется EIP. Младшие 16 разрядов этого регистра соответствуют регистру IP процессора 8086.

Регистр флагов (EFlags) имеет 32-разрядную структуру, представленную на рис. 1.3.

31 22 21 20 19 18 17 16 14 13,12 11 10 9 8 7 6 4 2 0

      ID VIP VIF AC VM RF X NT I O P L OF DF I F TF SF ZF X AF X PF X CF

Рис.1.3. Формат регистра флагов

Флаги регистра EFlags имеют следующие значения:

· Разряды 22-31 должны содержать 0;

· ID (Id Flag) - Флаг доступности команд идентификации;

· VIP (Virtual Interrupt Pending) – Виртуальный запрос прерывания;

· VIF (Virtual Interrupt Flag) – Виртуальное разрешение прерываний;

· AC (Alignment Check) – Флаг контроля выравнивания;

· VM (Virtual Mode) - при VM = 1 указывает на включение виртуального процессора 8086 в защищенном режиме;

· RF (Resumption Flag) - используется совместно с отладочными регистрами контрольных точек или пошагового режима. При RF=1 ошибки, возникшие во время отладки при исполнении команды, игнорируются до выполнения следующей команды;

· NT (Nested Task) - признак вложенности задач. NT=1 указывает, что текущая задача является вложенной по отношению к другой задаче;

· IOPL (Input/Output Privilege Level) - два бита, содержимое которых указывает на уровень текущего приоритета (от 0 до 3);

· OF, DF, IF, TF, SF, ZF, AF, PF и CF - флаги, используемые аналогично соответствующим флагам регистра Flags процессора 8086.

Процессор предоставляет доступ к управляющим регистрам, в которых сохраняется состояние компьютера, не зависящее от текущей задачи. Доступ к этим регистрам осуществляется специальными командами. Все управляющие регистры имеют длину 32 бита.

Программисту доступны управляющие регистры CRO (рис.1.4), CR2. CR3 и CR4

31 30 29 28 18 17 16 15 6 5 4 3 2 1 0

PG CD NW       AM   WP                   NE ET TS EM MP PE

Рис.1.4. Формат регистра CR0

Регистр CR1 зарезервирован фирмой Intel для использования в следующих моделях процессоров.

Управляющий регистр CRO заменяет регистр слова состояния машины, который использовался в процессоре 80286, поэтому для сохранения совместимости с этим процессором в наборе команд процессора 80386 оставлены команды LMSW и SMSW. Эти команды работают с младшими 16 битами регистра CRO. Для полного доступа к 32-разрядному управляющему регистру в процессоре 80386 и всех последующих моделях используется специальная модификация команды MOV.

Бит страничного преобразования PG (Paging Enable). Если этот бит установлен, то страничное преобразование разрешено, если сброшен, то запрещено.

Бит типа сопроцессора ЕТ (Extension Type) в МП 80286 и 80386 указывал на тип подключенного сопроцессора. Если ЕТ=1, то 80387, если ЕТ=0, то 80287. В более поздних моделях процессоров бит ЕТ всегда установлен.

Бит переключения задачи TS (Task Switched). Этот бит автоматически устанавливается процессором при каждом переключении задачи. Бит может быть очищен командой CLTS, которую можно использовать только на нулевом уровне привилегий.

Бит эмуляции сопроцессора ЕМ (Emulate). Если ЕМ=1, то обработка команд сопроцеccopa производится программно. При выполнении этих команд или команды WAIT возбуждается исключение отсутствия сопроцессора.

Бит присутствия арифметического сопроцессора МР (Math Present). Операционная система устанавливает МР=1, если сопроцессор присутствует. Этот бит управляет работой команды WAIT, используемой для синхронизации работы процессора и сопроцессора.

Бит разрешения защиты РЕ (Protection Enable). При РЕ=1 процессор работает в защищенном режиме, при РЕ=0 - в режиме реального адреса. Бит PE может быть установлен при загрузке регистра CRO командами LMSW или MOV CRO, а сброшен толькокомандой MOV CRO.

Регистр CR1 зарезервирован фирмой Intel для последующих моделей процессоров, Регистры CR2 и CR3 служат для поддержки страничного преобразования адреса. Эти два регистра используются вместе. CR2 содержит полный линейный адрес, вызвавший исключительную ситуацию на последней странице, а CR3 - адрес, указывающий базу каталога страниц.

Регистр CR4 содержит биты разрешения архитектурных расширений (рис1.5).

31 30 29 28 18 17 16 15 6 5 4 3 2 1 0

                                  MCE   PSE DE TSD PVI VME

Рис.1.5. Формат регистра CR4

Бит VME (Virtual-8086 Extension). – разрешение использования виртуального флага прерываний в режиме V86.

Бит PVI (Protected-Mode Virtual Interrupts). - разрешение использования виртуального флага прерываний в защищенном режиме.

Бит TSD (Time Stamp Disable). – превращение команды RDTSC в привилегированную.

Бит DE (Debugging Extensions). - разрешение точек останова по обращению к портам ввода-вывода

Регистры системных адресов (рис.1.6.) используются в защищенном режиме работы процессора. Они задают расположение системных таблиц, служащих для организации сегментной адресации в защищенном режиме.

47 16 15 0

GDTR Линейный базовый адрес Предел Регистр таблицы глобальных дескрипторов

47 16 15 0

IDTR Линейный базовый адрес Предел Регистр таблицы Дескрипторов прерываний

15 0

LDTR Селектор Регистр таблицы локальных дескрипторов

15 0

TR Селектор Регистр состояния задачи

Рис.1.6. Регистры системных адресов

1.2. Организация памяти [5]

Оперативная память представляет собой последовательность байтов. Байт является минимально адресуемым объемом памяти. Два смежных байта называются словом. Наиболее употребляемым типом данных защищенного режима являются два смежных слова – двойные слова. Два смежных двойных слова называются словами четырёхкратной длины. Можно адресовать десятибайтные ячейки памяти. Адресом ячейки, превышающей по размерам байт, является адрес ее младшего байта. Это самые общие сведения о памяти, необходимые для написания программы на ассемблере. Для работы с любым отладчиком необходимы сведения о логической организации и управления памятью операционной системой и аппаратной поддержке этого управления процессором.





Дата публикования: 2015-10-09; Прочитано: 3191 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...