- •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.2.3.3. Проверки целостности среды ia-32 во время выполнения
Процессоры в семействе процессоров Itanium, в процессе выполнения делают дополнительные проверки для верификации целостности среды. Эти проверки являются дополнительными к проверкам процесса выполнения определенным в процессорахIA-32 и выделены в табл. 6.4. Перечислены, но не выделены существующиеIA-32 проверки процесса выполнения. Дескрипторные поля не упомянутые в таблице не проверяются. Как задано в таблице, проверки процесса выполнения делаются либо при загрузках кода инструкцииIA-32, либо при обращении памяти данныхIA-32 к одному из заданных сегментных регистров. Эти проверки процесса выполнения не делаются при переключении из набора инструкций типаItaniumв набор инструкцийIA-32.
Табл.6.4. Проверки целостности среды IA-32 во время выполнения
Рекомендуется для … |
Ресурс |
Реальный режим |
Защищенный режим |
Режим VM86 |
Вызывается ошибка |
… всех кодовых загрузок |
PSR.spl |
не 0 |
игнорируется |
не 3 |
Ошибка загрузки кода (GPFault(0))A |
EFLAG.vmC FLG.pe |
EFLAG.vm равен 1, а CFLG.pe равно 0 | ||||
EFLAG.vif EFLAG.vip |
EFLAG.vip & EFLAG.vif & CFLG.pe & PSR.cpl==3 & (CFLG.pvi | (EFLAG.vm & CFLG.pme)) |
| |||
… всех кодовых загрузок CS |
dpl |
игнорируется |
не 3 |
Ошибка загрузки кода (GPFault(0)) | |
d-бит |
не 16 бит | ||||
type |
Игнорируется (может быть типа execилиdata) | ||||
|
GPFault, если данные расширяются вниз | ||||
s, p, a-бит |
Не равны 1 | ||||
g-бит/limit |
Нарушение границы сегмента | ||||
… обращений памяти данных к SS |
dpl |
dpl != PSR.cpl |
Ошибка стека | ||
d-бит |
игнорируется |
не 16 бит | |||
type |
игнорируется |
расширение данных вниз | |||
|
Чтение и недоступность чтения, запись и недоступность записи | ||||
s, p, a-бит |
Не равны 1 | ||||
g-бит/limit |
Нарушение границы сегмента | ||||
… обращений памяти данных к DS,ES,FSиGS |
dpl |
игнорируется |
GPFault(0) | ||
d-бит |
игнорируется |
не 16 бит | |||
type |
игнорируется |
расширение данных вниз | |||
|
Чтение и недоступность чтения, запись и недоступность записи | ||||
s, p, a-бит |
Не равны 1 | ||||
g-бит/limit |
Нарушение границы сегмента | ||||
… обращений памяти данных к CS |
dpl |
игнорируется |
GPFault(0) | ||
d-бит |
игнорируется |
не 16 бит | |||
type |
игнорируется |
расширение данных вниз | |||
|
Проверки чтения/записи игнорируются |
Чтение и недоступность чтения, запись и недоступность записи |
Проверки чтения/записи игнорируются | ||
s, p, a-бит |
Не равны 1 | ||||
g-бит/limit |
Нарушение границы сегмента | ||||
… обращений памяти к LDT,GDTилиTSS |
dpl |
игнорируется |
GPFault(Селектор/0)B | ||
type |
игнорируется | ||||
s-бит |
Не равен 0 | ||||
a,d-бит |
игнорируется | ||||
p-бит |
Не равен 1 | ||||
g-бит/limit |
Нарушение границы сегмента |
Ошибки выборки кода вызываются как высокоприоритетные GPFault(0).
При обращении к GDTилиLDT, код ошибки в вызовеGPFault– это значение селектора. В других случаях, код ошибки является нулем.