
- •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.4. Ia-32 среда с плавающей точкой
Для поддержки модели отложенного числового исключения Intel8087, регистрыFSR,FDRиFIRсодержат отложенную информация связанную с числовым исключением. РегистрFDRсодержит эффективный адрес и селектор сегмента операнда. РегистрFIRсодержит эффективный адрес, селектор кодового сегмента и биты кода операции числовой инструкции. РегистрFSRуказывает на тип числового исключения совокупностью битовIE,DE,ZE,OE,UE,PE,SFиES. БитESитожитIA-32 состояние исключения с плавающей точкой, следующим образом:
Если FSR.esчитается кодом типа Itanium, то возвращаемое значение является итогом любых немаскируемых отложенных исключений содержащихся в битахIE,DE,ZE,OE,UEиPEрегистраFSR.
Примечание. Чтение битаESне обязательно возвращает последнее записанное значение, если битESпротиворечит другим битам отложенных исключений вFSR.
Если FSR.esустановлен в 1 кодом типа Itanium, то задержанные числовыеIA-32 исключения генерируются на следующейIA-32 инструкции с плавающей точкой, независимо от информации числового исключения, записанной вFSRбитахIE,DE,ZE,OE,UEиPE.
Если FSR.esзаписан в противоречии сFSRбитами (IE,DE,ZE,OE,UEиPE), то последующие числовые исключения могут сообщить противоречивые биты состояний с плавающей точкой.
Когда программа типа Itanium загружает эти прикладные регистры (AR29,AR30), тогда, если не нулевое значение будет записано в битах, перечисленных как резервированные, то будет вызвана ошибка «Зарезервированный регистр/поле». При записи этих регистров никакие значения кодов полей не проверяются. РегистрыFSR,FDRиFIRдолжны быть сохранены, не смотря на переключение контекста, чтобы генерировать и точно сообщать числовые исключения.
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 |
Смещение операнда (fea) | |||||||||||||||||||||||||||||||
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) |
Селектор операнда (fds) |
Рис. 6.10. Регистр данных с плавающей точкой (FDR)
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 |
Смещение кода (fip) | |||||||||||||||||||||||||||||||
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 |
резервировано |
Код операции {10:0} (fop) |
Селектор кода (fcs) |
Рис. 6.11. Регистр инструкций с плавающей точкой (FIR)
6.2.6. Ia-32 регистры ммх технологии
Восемь IA-32 регистров ММХ технологии отображаются в восьми Itanium регистрах с плавающей точкойFR8-FR15, причем ММ0 отображается вFR8, а ММ7 отображается вFR15. Отображение регистра ММХ технологии для представленияIA-32 стека с плавающей точкой, зависит от значения указателя вершиныIA-32 стека с плавающей точкой
81 |
80 |
64 |
63 |
0 |
|
1 |
единицы |
ММ0…ММ7{31:0} |
FR8-FR15 |
Рис. 6.12. IA-32 регистры ММХ технологии (от ММ0 до ММ7)
Когда значение, записанное в регистр ММХ технологии, используется IA-32 инструкцией ММХ технологии:
В поле порядка соответствующего регистра с плавающей точкой (биты 80-64) и в знаковом бите (бит 81), все биты устанавливаются в единицы.
Мантисса (биты 63-0) устанавливается в значение данных технологии ММХ.
Когда из регистра ММХ технологии считывается значение с помощью IA-32 инструкции ММХ технологии:
Поле порядка соответствующего регистра с плавающей точкой (биты 80-64) и знаковый бит (бит 81) игнорируются, включая любые коды NaTVal.
В результате этого отображения мантисса значения с плавающей точкой, записанного либо IA-32, либо Itanium инструкциями, проявится вIA-32 регистре ММХ технологии. Также,IA-32 регистр технологии ММХ проявится в поле мантиссы одного из восьми отображаемых регистров с плавающей точкой.
Чтобы избежать деградации эффективности, программистам настоятельно советуется не смешивать IA-32 инструкции с плавающей точкой и ММХ технологии. Детальнее рекомендации по программированию ММХ технологии см. в Intel Architecture Software Developer's Manual.