- •6. Модель прикладного выполнения в системной среде Intel®Itanium™
- •6.1. Режимы набора инструкций
- •6.1.1. Выполнение набора инструкций в среде IntelItanium.
- •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. Ia-32 регистры с плавающей точкой
- •6.2.5.1. Ia-32 стек регистров с плавающей точкой
- •6.2.5.2. Специальные случаи
- •6.2.5.3. Регистры управления с плавающей точкой ia-32.
- •6.2.5.4. Ia-32 среда с плавающей точкой
- •6.2.6. Ia-32 регистры ммх технологии
- •6.2.7. Ia-32 регистрыSse
- •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.2. Alat
- •6.4.3. Влияние NaT/NaTValна инструкцииIa-32
6.1.2. Выполнение набора инструкций ia-32
Пока процессор выполняет набор инструкций IA-32 (PSR.is=1), используется архитектура приложенийIA-32 (такая же, как в процессореPentiumIII), а именно:
Процессор загружает, декодирует и выполняет 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 к памяти и портам ввода/вывода.
Обращения к памяти данных и инструкций обязательно делается в порядке убывания. Упорядочивание памяти использует модель упорядочивания памяти процессора PentiumIII.
Ресурсы операционной системы 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не изменяет уровень привилегий процессора.