- •6. Модель прикладного выполнения в системной среде Intel® Itanium™
- •6.1. Режимы набора инструкций
- •6.1.1. Выполнение набора инструкций в среде Intel Itanium.
- •6.1.2. Выполнение набора инструкций ia-32
- •6.1.3. Переключения наборов инструкций
- •6.1.3.1. Инструкция jmpe
- •6.1.3.2. Инструкция перехода к ia
- •6.1.4. Переключения режимов работы ia-32
- •6.2. Модель состояния прикладных регистров ia-32
- •6.2.1. Регистры общего назначения ia-32
- •6.2.2. Указатель инструкций ia-32
- •6.2.3. Сегментные регистры ia-32
- •6.2.3.1. Сегменты данных и кода
- •6.2.3.2. Сегментный дескриптор и целостность среды
- •6.2.3.2.1. Защищенный режим.
- •6.2.3.2.2 Режим vm86
- •6.2.3.2.2 Реальный режим
- •6.2.3.3. Проверки целостности среды ia-32 во время выполнения
- •6.2.4. Прикладной ia-32 регистр eflag
- •6.2.5.2. Специальные случаи
- •6.2.5.3. Регистры управления с плавающей точкой ia-32.
- •6.3. Обзор моделей памяти
- •6.3.1. Упорядочивание памяти
- •6.3.2. Сегментация ia-32
- •6.3.3. Самомодифицирующийся код
- •6.3.4. Взаимодействия упорядочивания памяти.
- •6.4. Использование кодом ia-32, регистров Itanium
- •6.4.1. Механизм стека регистров
- •6.4.3. Влияние NaT/NaTVal на инструкции ia-32
6.1.2. Выполнение набора инструкций ia-32
Пока процессор выполняет набор инструкций IA-32 (PSR.is=1), используется архитектура приложений IA-32 (такая же, как в процессоре Pentium III), а именно:
Процессор загружает, декодирует и выполняет IA-32 инструкции (т.е. уровня 16/32-битных приложений, технологий MMX и SSE).
Является видимым только состояние регистров на прикладном уровне IA-32 (т.е. основные регистры IA-32, MMX и SSE регистры, регистры селекторов, EFLAGS, FP регистры и регистры управления FP). Состояние прикладных и управляющих регистров Itanium – не видимо, а именно, не видны регистры – переходов, предикатные, прикладные, управления, отладки, тестирования и мониторинга выполнения.
Действительна сегментация режимов IA-32: реального, защищенного и VM86. Применяются проверки сегментной защиты, а виртуальные адреса генерируются согласно правилам сегментации IA-32. Определены сегменты GDT и LDT, для поддержания сегментированных прикладных программ IA-32. Полностью поддерживаются сегментированные 16- и 32-битные коды.
Виртуальные обращения ограничены 4G байтами виртуального региона 0. Управление памятью архитектуры Itanium используется для трансляции виртуальных и физических обращений набора инструкций IA-32 к памяти и портам ввода/вывода.
Обращения к памяти данных и инструкций обязательно делается в порядке убывания. Упорядочивание памяти использует модель упорядочивания памяти процессора Pentium III.
Ресурсы операционной системы IA-32 (страничный обмен IA-32, регистры MTRR, таблица дескрипторов прерываний IDT, регистры управления, регистры отладки, а также привилегированные инструкции) заменены ресурсами, определенными в архитектуре Itanium. Все обращения к этим ресурсам приводят к ошибке перехвата.
6.1.3. Переключения наборов инструкций
В следующем разделе собрано поведение каждого переключения набора инструкций. Для уточнения деталей можно посмотреть описание инструкций jmpe (инструкция IA-32) и br.ia (инструкция Itanium).
Операционные системы могут запретить переключение набора инструкций (jmpe и br.ia), с помощью установки бита PSR.di в 1. Если PSR.di=1, то выполнение jmpe или br.ia приведет к ошибке «Запрещено переключение набора инструкций». Переключение набора инструкций на уровне системы при выполнении rfi или прерывания, игнорирует состояние бита PSR.di (описанного в разделе 3.3.2 «Регистр состояния процессора (PSR)» во втором томе).
6.1.3.1. Инструкция jmpe
Инструкции jmpe reg16/32 и jmpe disp16/32 используются для перехода и переключения управления на набор инструкций Itanium. Здесь есть две формы: косвенная регистровая и абсолютная. Абсолютная форма вычисляет целевой виртуальный Itanium адрес следующим образом:
IP{31:0} = disp16/32 + CSD.base
IP{32:63} = 0
Косвенная форма читает содержимое 16/32-битного регистра и вычисляет целевой Itanium адрес следующим образом:
IP{31:0} = [reg16/32] + CSD.base
IP{32:63} = 0
Адресаты для инструкции jmpe должны быть выровнены на 16-байтовую границу и не должны превышать 4GB в 64-битном адресном пространстве, из-за ограничений адресуемости IA-32. Если есть какое-то задержанное цифровое исключение IA-32, то jmpe аннулируется и генерируется ошибка «Исключение с плавающей точкой IA-32».
Переключение в набор инструкций Itanium не изменяет уровень привилегий процессора.
