Эффективный адрес определяется как сумма значений базового регистра, смещения в команде и индексного регистра, умноженного на масштабный коэффициент (1, 2, 4, 8).
Раздел 2. Архитектура и системы команд современных ПЭВМ и ARM7.
Тема 2.2. Архитектура IA-32.
План:
1. Введение в IA-32.
2. Сочетание 16-ти разрядных и 32-разрядных адресов и данных.
3. Форматы команд и методы адресации.
4. Расширения системы команд.
Введение в IA-32.
IA32 – так по классификации фирмы Intel обозначается архитектура 32-разрядных процессоров Intel от процессора 80386 до 80686. Процессоры IA32 могут работать в двух основных режимах:
1. Real Address Mode (реальный режим);
2. Protected Virtual Address Mode (защищенный режим).
В реальном режиме IA32 полностью совместимы с 8086, имеют аналогичные регистровый файл, адресное пространство, механизм сегментации памяти.
В защищенном режиме появляются новые возможности:
· дополненный регистровый файл;
· новые механизмы сегментации и страничной адресации;
· режим виртуального процессора 8086 - Virtual 8086 Mode (V86);
· добавления к системе команд.
В большинстве моделей IA32 введен еще один режим – System Management Mode (режим системного управления) для отладочных целей и для реализации функции энергосбережения.
Набор регистров общего назначения включает в себя регистры 16-разрядных процессоров 8086/8088, однако они имеют разрядность 32 бита. К обозначениям регистров добавлена приставка E (Extended - расширенный): EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Возможно обращение к младшим 16 разрядам расширенных регистров по именам без приставки, например, AX, BX, а также отдельно к младшим и старшим байтам, например, AL, AH.
|
|
Регистр состояния процессора FLAGS расширен до 32 разрядов и обозначается – EFLAGS. Флаги 16-разрядных процессоров с 0 по 11 разряд занимают такое же положение в EFLAGS.
Добавлены новые флаги:
· ID Flag (ID, 21 бит) – Если возможно программно устанавливать и сбрасывать этот флаг, процессор поддерживает команду CPUID.
· Virtual Interrupt Pending (VIP, 20 бит) – Указывает на то, что остались прерывания, ожидающие обработку. Устанавливается и сбрасывается программно, процессор только считывает его значение.
· Virtual Interrupt Flag (VIF, 19 бит) – Образ флага IF для режима V86.
· Alignment Check (AC, 18 бит) – Флаг контроля выравнивания. При установке этого флага во время обращении к невыровненному операнду возникает исключение.
· Virtual-8086 Mode (VM, 17 бит) – Включает/выключает режим V86 в защищенном режиме.
· Resume Flag (RF, 16 бит) – Флаг возобновления исполнения при отладке.
· Nested Task (NT, 14 бит) – Флаг вложенной задачи. Устанавливается, когда текущая задача связана с прерванной задачей, очищается, если такой связи нет.
· I/O Privilege Level (IOPL, 12-13 биты) – определяет уровень привилегий ввода/вывода для текущей задачи.
Сегментные регистры CS, SS, DS, ES, как и в процессорах 8086/8088, имеют разрядность 16 бит. К ним добавлены регистры FS и GS – дополнительные сегментные регистры данных.
|
|
В реальном режиме, в котором процессор находится сразу после включения питания или сброса, сегментные регистры определяют 64Кб сегменты, как и в 16-разрядных процессорах, а в защищенном режиме содержат указатели (т.н. селекторы) на описатели сегментов (64-разрядные дескрипторы), находящиеся в памяти в виде таблиц.
Дескриптор содержит:
1. базовый адрес,
2. предельный размер сегмента,
3. атрибуты сегмента (права доступа).
Дескрипторы являются основой защиты и мультизадачности. В защищенном режиме сегменты могут начинаться с любого линейного адреса и иметь любой предел вплоть до 4Гбайт. Существуют две обязательные дескрипторные таблицы:
1. глобальная (GDT),
2. дескрипторная таблица прерывания (IDT),
а также множество (до 8192) локальных дескрипторных таблиц (LDT), из которых в один момент времени процессору доступна только одна.
Дескрипторы сегментов могут находиться в GDT или LDT. Расположение дескрипторных таблиц определяется регистрами процессора:
1. GDTR (Global Descriptor Table Register),
2. IDTR (Interrupt Descriptor Table Register),
3. LDTR (Local Descriptor Table Register).
Регистры GDTR и IDTR - 6-байтные, они содержат 32 бита линейного базового адреса дескрипторной таблицы и 16 бит предела таблицы. Программно доступная часть регистра LDTR - 16 бит, которые являются селектором LDT. Дескрипторы LDT находятся в GDT. Однако чтобы не обращаться каждый раз к GDT, в процессоре имеется теневая (программно недоступная) часть регистра LDTR, в которую процессор помещает дескриптор LDT при каждой перегрузке селектора в регистре LDTR.
|
|
Значение сегментного регистра (селектор) содержит:
1. индекс дескриптора в дескрипторной таблице;
2. бит, определяющий, к какой дескрипторной таблице производится обращение (LDT или GDT);
3. запрашиваемые права доступа к сегменту.
Таким образом, селектор выбирает дескрипторную таблицу, выбирает дескриптор из таблицы, а по дескриптору определяется положение сегмента в линейном пространстве памяти. Однако обращение к дескрипторным таблицам происходит только при загрузке селектора в сегментный регистр. При этом процессор помещает дескриптор в теневую (программно недоступную) часть сегментного регистра. При формировании линейного адреса дескриптор сегмента процессору уже известен (см. рис. ниже).
Рисунок. Сегментная адресация в защищенном режиме
В защищенном режиме используются также 32-разрядные:
1. регистры управления CR0-CR3,
|
|
Регистры отладки DR0-DR7,
3. регистры проверки TR0-TR7.
Кроме механизма адресации 32-разрядные процессоры реализуют еще один уровень косвенности при формировании физического адреса – страничное преобразование адресов, где базовым объектом адресации является блок фиксированного размера (4Кбайт и/или 4 Мбайт) – страница. Фиксированный размер страницы позволяет организовать эффективную систему виртуальной памяти с заменой страниц по требованию и защитой на уровне страниц.
В страничном преобразовании участвуют два типа структур:
1. каталоги таблиц,
2. таблицы страниц.
Их положение в памяти определяется физическим адресом, записанным в регистр управления CR3. Для включения страничной переадресации устанавливают 31 бит (Paging) в регистре CR0.
В защищенном режиме возможны дополнительные методы адресации. Команды имеют длину от 1 до 15 байт. Им могут предшествовать префиксные байты. Кроме префиксов REP и SEG, введены новые префиксы:
1. размера операнда SIZ (operand SIZe), для переключения 16- и 32 –разрядных операндов;
2. размера адреса ADDRSIZ (ADDRess SIZe) - для переключения 16- и 32 –разрядных адресов.
Для новых методов адресации в формат команды добавлено поле SIB (Scale Index Base), которое определяет:
1. масштаб,
2. индексный регистр,
3. базовый регистр.
Эффективный адрес определяется как сумма значений базового регистра, смещения в команде и индексного регистра, умноженного на масштабный коэффициент (1, 2, 4, 8).
Примеры команд с новыми методами адресации приведены в следующей таблице:
Дата добавления: 2021-11-30; просмотров: 17; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!