- •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.3.2. Инструкция перехода к ia
Инструкция br.iaиспользуется для безусловного перехода к набору инструкцийIA-32. АдресатыIA-32 задаются с помощью 32-битного указателя виртуального адреса (но не эффективного адреса). ВиртуальныйIA-32 адрес усекается до 32 бит. Подсказки перехода дляbr.iaдолжны всегда устанавливаться как предсказывающие статистически принятый переход. Процессор переключается в набор инструкцийIA-32 следующим образом:
IP{31:0} = BR[b]{31:0}
IP{32:63} = 0
EIP{31:0} = IP{31:0} – CSD.base
Переключение в набор инструкций IA-32 не изменяет уровень привилегий процессора.
Программное обеспечение должно гарантировать, что до использования перехода, и селектор, и дескриптор сегмента загружены должным образом. Если целевое значение EIPвыходит за границу кодового сегмента, либо имеется нарушение привилегий сегментного кода, то на целевой инструкцииIA-32 вызываетсяIA-32 исключениеGPFault(0).
Процессор не гарантирует, что набор инструкций Itanium, генерирующий записи в поток инструкцииIA-32, наблюдаем для процессора. Детальнее можно посмотреть в разделе 6.3.3 «Самомодифицирующийся код». Перед входом в систему командIA-32, основанное наItaniumпрограммное обеспечение должно гарантировать, что все предшествующие окна стека регистров сброшены в память. Все регистры остающиеся в текущем и предшествующем окнах стека регистров останутся в неопределенном состоянии после выполнения набора инструкцийIA-32. Программное обеспечение не может полагаться на значения этих регистров после переключения набора инструкций. Детали есть ниже в разделе 6.4.1 «Механизм стека регистров».
6.1.4. Переключения режимов работы ia-32
Как описано ранее в разделе 6.1.2 «Выполнение набора инструкций IA-32», инструкции jmpe, br.iaиrfi, а также прерывания могут переключать процессор между двумя видами наборов инструкций. Допускаются переключения между архитектуройItaniumи всеми основными режимамиIA-32. Как показано на рис. 6.2br.iaиrfiпереключают процессор из набора инструкцийItaniumлибо вIA-32 режимVM86, либо в реальный режим, либо защищенный режим. В то же времяjmpeи прерывания переключают процессор изIA-32 режимаVM86, реального режима, защищенного режима в набор инструкцийItanium. Переключения между режимамиVM86, реальным и запрещенным, задается теми же самыми средствами, которые заданы в“Intel Architecture Software Developer’s Manual”.
-
PSR.is &
!CR0.pe
Защищенный режим IA-32
PSR.is &
CR0.pe &
EFLAG.vm
PSR.is &
CR0.pe &
!EFLAG.vm
PSR.is & CR0.pe &
! EFLAG.vm
Реальный режим IA-32
Режим VM86 IA-32
!PSR.is
!PSR.is
PSR.is&
!CR0.pe
Набор инструкций Itanium
PSR.is &
CR0.pe &
EFLAG.vm
Рис.6.2. Переключение режимов наборов инструкций.
Интерфейсный код, базирующийся на Itanium, ответственен за установку и загрузку непротиворечивой среды защищенного режима, реального режима или режимаVM86 (например, загрузить сегментные селекторы и дескрипторы и т.п.), как это описано в разделе 6.2.3.2 «Дескриптор сегмента и целостность среды». Процессор применяет дополнительные проверки дескриптора сегмента, чтобы гарантировать, что операции выполнены в непротиворечивой манере.