- •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.2.3.2.1. Защищенный режим.
Перед входом в набор инструкций IA-32, для установки дескрипторов сегментов для среды защищенного режима, программное обеспечение типа Itanium должно следовать следующим правилам:
Программа типа Itanium должна гарантировать, что поле дескрипторного регистра стекового сегмента DPL==PSR.spl.
Для дескрипторных регистров сегментов DSD, ESD, FSD и GSD, программа типа Itanium должна гарантировать, что поле DPL>=PSR.spl.
Для дескрипторного регистра сегмента CSD, программа типа Itanium должна гарантировать, что поле DPL==PSR.spl (кроме соответствующих кодовых сегментов).
Программа должна гарантировать, что дескрипторные регистры всех сегментов кода, стека и данных не содержат кодирования для любых системных сегментов.
Программа должна гарантировать, что A-бит установлен в единицу в дескрипторных регистрах всех сегментов.
Программа должна гарантировать, что для всех присутствующих сегментов данных P-бит установлен в 1, а для всех нулевых сегментов данных он 0.
6.2.3.2.2 Режим vm86
Перед входом в набор инструкций IA-32, для установки дескрипторов сегментов для среды VM86, программное обеспечение типа Itanium должно следовать следующим правилам:
PSR.spl должно быть равно 3 (или IPSR.spl должно быть равно 3 для rfi).
Программа типа Itanium должна гарантировать, что поле дескрипторного регистра стекового сегмента DPL==PSR.spl==3 и установить 16-битовые запись/чтение данных и расширение.
Для дескрипторных регистров сегментов CSD, DSD, ESD, FSD и GSD, программа типа Itanium должна гарантировать, что поле DPL==3 и сегмент установлен для 16-битовых записи/чтения данных и расширения.
Программа должна гарантировать, что дескрипторные регистры всех сегментов кода, стека и данных не содержат кодирования для любых системных сегментов.
Программа должна гарантировать, что в дескрипторных регистрах всех сегментов P-бит и A-бит установлены в единицу.
Программа должна гарантировать, что соотношение Base=Selector*16 поддерживается для всех дескрипторных регистров сегментов CSD, DSD, ESD, SSD, FSD и GSD, в противном случае работа процессора не предсказуема.
Программа должна гарантировать, что для всех дескрипторных регистров сегментов CSD, DSD, ESD, SSD, FSD и GSD, значения границы установлены в 0xFFFF, в противном случае может генерироваться ложные ошибки границы сегмента (GPFault или Stack Fault).
Программа должна гарантировать, что в дескрипторных регистрах всех сегментов разрешены чтение/запись, включая и кодовый сегмент. Процессор будет игнорировать ошибки полномочий выполнения.
6.2.3.2.2 Реальный режим
Перед входом в набор инструкций IA-32, для установки дескрипторов сегментов для среды защищенного режима, программное обеспечение типа Itanium должно следовать следующим правилам (иначе работа программы будет непредсказуема):
Программа типа Itanium должна гарантировать, что поле PSR.spl равно 0.
Программа типа Itanium должна гарантировать, что поле дескрипторного регистра стекового сегмента DPL равно 0.
Программа должна гарантировать, что дескрипторные регистры всех сегментов кода, стека и данных не содержат кодирования для любых системных сегментов.
Программа должна гарантировать, что в дескрипторных регистрах всех сегментов P-бит и A-бит установлены в единицу.
Для нормальных 64К операций реального режима, программа должна гарантировать, что соотношение Base=Selector*16 поддерживается для всех дескрипторных регистров сегментов CSD, DSD, ESD, SSD, FSD и GSD.
Для нормальных 64К операций реального режима, программа должна гарантировать, что для всех дескрипторных регистров сегментов CSD, DSD, ESD, SSD, FSD и GSD, значения границы установлены в 0xFFFF, а размер сегмента установлен 16-битным (64К).
Программа типа Itanium должна гарантировать, что в дескрипторных регистрах всех сегментов разрешены чтение/запись, включая и кодовый сегмент (для нормальной работы реального режима).
