Скачиваний:
57
Добавлен:
16.04.2013
Размер:
480.26 Кб
Скачать

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не изменяет уровень привилегий процессора.