- •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.5.3. Регистры управления с плавающей точкой ia-32.
Регистр FPSRуправляет Itanium инструкциями с плавающей точкой, с помощью битов состояния и управления. РегистрFPSRне управляетIA-32 инструкциями с плавающей точкой и не отражает состояниеIA-32 инструкций с плавающей точкой. ИнструкцииIA-32 с плавающей точкой иSSEимеют отдельные регистры управления и состояния, называемыеFCR(floatingpointcontrolregister– регистр управления с плавающей точкой) иFSR(floatingpointstatusregister– регистр состояния с плавающей точкой).
Как показано на рис.6.8., FCRсодержитIA-32 битыFCWи все биты управленияSSE.
Как показано на рис.6.9., FSRсодержитIA-32 флаги состояния с плавающей точкойFSW,FTWи поля состоянияSSE. Поля тегов показывают – являются ли соответствующие логическиеIA-32 регистры с плавающей точкой пустыми. Не поддерживаются коды тегов для нуля и специальных условий, таких какNaN, бесконечность или денормализованность каждого логическогоIA-32 регистра с плавающей точкой. Однако, набор инструкцийIA-32 читаяFTW, вычисляет дополнительные специальные условия для каждогоIA-32 регистра с плавающей точкой. Код типа Itanium может использовать операцию классификации с плавающей точкой для того, чтобы определить диспозицию каждогоIA-32 регистра с плавающей точкой.
Вместе, FCRиFSRсодержат всюIA-32 информацию о тегах, состоянии и управлении с плавающей точкой. ИнструкцииIA-32, которые изменяются и управляютсяMXSCR,FCW,FSWиFTAG, на самом деле изменяютFSRи управляютсяFCR. ПриIA-32 чтении или записи регистровMXSCR,FCW,FSWиFTW, возвращается та же самая информация, как при чтении или записиFSRиFCRс помощью Itanium инструкций.
Перед входом в набор инструкций IA-32, программа должна гарантировать, чтоFCRиFSRзагружены должным образом для числового выполнения. Когда программа типа Itanium загружает эти прикладные регистры (AR21 иAR28), тогда, если в зарезервированном бите окажется не нулевое значение, то будет вызвана ошибка «Зарезервированный регистр/поле». При записи в эти регистры, никакие значения кодов полей не проверяются.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA-32 FCW{12:0} | ||||||||||||
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Резервировано (установлено в 0) |
IC |
R |
C |
P |
C |
0 |
1 |
PM |
UM |
OM |
ZM |
DM |
IM | ||||||||||||||||||
63 |
62 |
61 |
60 |
59 |
58 |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
49 |
48 |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
39 |
38 |
37 |
36 |
35 |
34 |
33 |
32 |
Резервировано (установлено в 0) |
FZ |
R |
C |
PM |
UM |
OM |
ZM |
DM |
IM |
rv |
Игнорируется | ||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA-32MXCSR(управление) |
Рис.6.8. IA-32 регистр управления с плавающей точкой (FCR).
IA-32FTW{15:0} |
IA-32FSW{15:0} | ||||||||||||||||||||||||||||||
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
tg7 |
0 |
tg6 |
0 |
tg5 |
0 |
tg4 |
0 |
tg3 |
0 |
tg2 |
0 |
tg1 |
0 |
tg0 |
B |
C3 |
TOP |
C2 |
C1 |
C0 |
ES |
SF |
PE |
UE |
OE |
ZE |
DE |
IE | ||
63 |
62 |
61 |
60 |
59 |
58 |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
49 |
48 |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
39 |
38 |
37 |
36 |
35 |
34 |
33 |
32 |
Резервировано (установлено в 0) |
Игнорируется |
rv |
PE |
UE |
OE |
ZE |
DE |
IE | |||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IA-32MXCSR(состояние) |
Рис.6.9. IA-32 регистр состояния с плавающей точкой (FSR).
Табл. 6.7. Размещение IA-32 регистров состояния с плавающей точкой (FSR)
Управляющее поле IA-32 |
Управляющее поле Itanium |
Биты |
Использование IA-32 |
Использование в Itanium |
FSW.ie |
FSR.ie |
0 |
Исключение: неверная операция |
Эти биты не отражают состояние выполнения с плавающей точкой Itanium.
Подробности о цифровых флагах IA-32 см. в Intel Architecture Software Developer's Manual |
FSW.de |
FSR.de |
1 |
Исключение: операнд денормализован | |
FSW.ze |
FSR.ze |
2 |
Исключение: деление на ноль | |
FSW.oe |
FSR.oe |
3 |
Исключение: переполнение | |
FSW.ue |
FSR.ue |
4 |
Исключение: антипереполнение | |
FSW.pe |
FSR.pe |
5 |
Исключение по точности | |
FSW.sf |
FSR.sf |
6 |
Ошибка стека | |
FSW.es |
FSR.esA |
7 |
Ошибка Summury | |
FSW.c3:0 |
FSR.c3:0 |
8:10, 14 |
Коды числовых условий | |
FSW.top |
FSR.top |
11:13 |
Верхушка числового стека | |
FSW.b |
FSR.b |
15 |
| |
FTW |
FSR.tg {7:0}B |
16,18,20,22, 24,26,28,30 |
Теги чисел: 0 – не пуст, 1 – пуст C | |
Нули |
17, 19, 21, 23, 25, 27, 29,31,39:47 |
Игнорируются – Запись игнорируется, чтение возвращает 0 | ||
MXCSR.ie |
FSR.ie |
32 |
Исключение: неверная операция при SSE |
Не отражают состояние выполнения с плавающей точкой Itanium.
Подробности см. в Intel Architecture Software Developer's Manual |
MXCSR.de |
FSR.de |
33 |
Исключение: операнд SSEденормализован | |
MXCSR.ze |
FSR.ze |
34 |
Исключение: деление на ноль при SSE | |
MXCSR.oe |
FSR.oe |
35 |
Исключение: переполнение при SSE | |
MXCSR.ue |
FSR.ue |
36 |
Исключение: антипереполнение при SSE | |
MXCSR.pe |
FSR.pe |
37 |
Исключение по точности при SSE | |
Резервировано |
38, 48:63 |
Резервировано | ||
Игнорируется |
39:47 |
Игнорируются – Запись игнорируется, чтение возвращает 0 |
Детальнее о бите исключения Summuryсм. в разделе 6.2.5.4
Коды тегов показывающие содержится ли в числовом регистре 0, NaN, бесконечность или денормализованное значение, не поддерживаются при чтенииFSRинструкциями типа Itanium. Набор инструкцийIA-32, читая полеFTW, классифицирует возвращаемое значение как ноль,NaN, бесконечность или денормализованное.
Все инструкции технологии ММХ, устанавливают все цифровые теги в ноль (что означает – регистр не пуст). Однако, ММХ инструкция EMMSустанавливают все цифровые теги в единицу (что означает – регистр пуст).