- •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.4. Прикладной ia-32 регистрEflag
Регистр EFLAG(AR24) состоит из двух основных компонентов – арифметических флагов пользователя (CF,PF,AF,ZF,SF,OFиID) и системных управляющих флагов (TF,IF,IOPL,NT,RF,VM,AC,VIF,VIP). Нет арифметических или системных флагов связанных с выполнением инструкцийItanium. Когда программа типаItaniumзагружает этот прикладной регистр (AR24), тогда, если в зарезервированных битах будет записано не нулевое значение, то будет вызвана ошибка «Зарезервированный регистр/поле». См. раздел 10.3.2 «РегистрEFLAGсистемыIA-32» во втором томе.
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) |
id |
vip |
vif |
ac |
vm |
rf |
0 |
nt |
io |
pl |
of |
df |
if |
tf |
sf |
zf |
0 |
af |
0 |
pf |
1 |
cf | |||||||||
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) |
Рис.6.7. IA-32 регистрEFLAG(AR24).
Арифметические флаги используются набором инструкций IA-32 для отображения состояния операцийIA-32, управления строковыми операциямиIA-32 и управления условиями переходов для инструкцийIA-32. Эти флаги игнорируютсяItaniumинструкциями. Флаги ID, OF, DF, SF, ZF, AF, PF и CF описаны в Intel Architecture Software Developer's Manual.
Табл. 6.5. Поля IA-32 регистраEFLAGS
EFLAGA |
Биты |
Описание |
cf |
0 |
IA-32 флаг переноса. Подробнее см. вIASDMB |
|
1 |
Игнорируется. – Запись игнорируется, чтение возвращает 0 и для IA-32, и дляItaniumинструкций. |
|
3,5, 15 |
Игнорируется. – Запись игнорируется, чтение возвращает 0 и для IA-32, и дляItaniumинструкций. Программа должна установить эти биты в 0. |
pf |
2 |
IA-32 флаг паритета. Подробнее см. вIASDMB |
af |
4 |
IA-32 флаг дополнительного переноса. Подробнее см. вIASDMB |
zf |
6 |
IA-32 флаг нулевого результата. Подробнее см. вIASDMB |
sf |
7 |
IA-32 флаг знака. Подробнее см. вIASDMB |
tf |
8 |
См. раздел 10.3.2 «Регистр EFLAGсистемыIA-32» во втором томе. |
if |
9 | |
df |
10 |
IA-32 флаг направления. Подробнее см. вIASDMB |
of |
11 |
IA-32 флаг переполнения. Подробнее см. вIASDMB |
iopl |
13:12 |
См. раздел 10.3.2 «Регистр EFLAGсистемыIA-32» во втором томе. |
nt |
14 | |
rf |
16 | |
vm |
17 | |
ac |
18 | |
vif |
19 | |
vip |
20 | |
id |
21 | |
|
63:22 |
Резервировано, должно быть установлено в 0 |
При входе в набор инструкций IA-32 все биты могут быть прочитаны последующими инструкциями IA-32, после выхода из набора инструкций IA-32 эти биты показывают результаты всех предшествующих инструкций IA-32. Ни один из битов EFLAG не изменяет поведение Itanium инструкций при выполнении.
IASDM – это Intel Architecture Software Developer's Manual.