Прикладная программная модель процессоров Pentium
Старшие модели процессоров Pentium программно совместимы с младшими моделями. Регистры ППМ удобно представить в виде 4 групп 32-разрядных регистров /1/:
1) РОН, которые могут использоваться в формате двойного слова (32 бита), слова (16 бит) и байта (8 бит): EAX (AX, AH, AL), EBX (BX, BH, BL), ECX (CX, CH, CL), EDX (DX, DH, DL).
2) Регистры указатели ESP (SP), EBP (BP) и индексные регистры ESI (SI), EDI (DI), которые доступны в формате двойного слова и слова.
3) Указатель команд EIP (IP).
4) Регистр флагов FLAGS или PSW.
Функции, выполняемые регистрами, в подавляющем большинстве аналогичны функциям, рассмотренных ранее регистров. Регистр FLAGS помимо уже известных флагов состояния и управления, содержит системные флаги, которые управляют обработкой исключений, вводом-выводом и рядом других функций. Большинство системных флагов предназначено для использования операционной системой.
СПМ включает в себя следующий набор регистров /1/:
1) 6-байтовые регистры GDTR (Global Descriptor Table Register) и IDTR (Interruption Descriptor Table Register) адресов глобальной дескрипторной таблицы (GDT) и дескрипторной таблицы прерываний (IDT).
|
|
2) 16-битный регистр LDTR (Local Descriptor Table Register), содержащий селектор сегмента локальной дескрипторной таблицы (LDT), и 16-битный регистр TR (Task Register), содержащий селектор сегмента состояния задачи TSS (Task State Segment).
3) 16-битные сегменты регистры CS, SS, DS, ES, FS, GS, содержащие селекторы дескрипторов текущих сегментов кода, стека и данных.
4) 32-битные регистры управления процессором CR (Control Register): CR0, CR2, CR3, CR4. Они хранят признаки состояния процессора, общие для всех задач.
5) 8-байтовые программно недоступные кэш-регистры для хранения текущих дескрипторов сегментов стека – регистр SSt, кода – регистр CSt, данных – регистры DSt, ESt, FSt, GSt, а также сегментов LDT и TSS.
6) 32-разрядные регистры отладки DR (Debug Register): DR0-DR7, предназначенные для аппаратной отладки программ.
7) 32-разрядные регистры тестирования TR (Test Register): TR1-TR12, используемые для тестирования внутренних устройств процессора.
Начиная с Pentium 286, процессоры Intel могли работать в защищённом режиме, что обеспечивало аппаратную поддержку многозадачности. Защищённый режим работы процессора Pentium сохранил сегментную модель памяти. Однако сегмент в защищённом режиме – это не просто область памяти, это объект, имеющий строго определённый размер и обладающий набором атрибутов, по которым выполняется аппаратная защита памяти со стороны процессора. В соответствии с /5/, каждый сегмент имеет свой дескриптор (описатель сегмента). Дескрипторы сегментов хранятся в специальных системных сегментах – дескрипторных таблицах. Существует 3 типа дескрипторных таблиц: глобальная GDT (одна в системе), локальная LDT (своя для каждой задачи), таблица прерываний IDT. Каждый элемент (дескриптор) таблицы описывает свой сегмент памяти. Сегменты памяти не пересекаются. Размер таблиц находится в диапазоне 8 байт-64 Кбайт. Адреса начала GDT и IDT хранятся в специальных программно доступных регистрах процессора GDTR и IDTR, соответственно. Из 48 байт (длина регистров) 32 байта указывают линейный адрес начала соответствующей таблицы, а остальные 16 байт – её размер (предел). Регистры LDTR и TR содержат селекторы (индексы дескрипторов), с помощью которых из таблицы GDTвыбираются дескрипторы с базовыми адресами LDT и TSS отдельных задач.
|
|