Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 6..doc
Скачиваний:
42
Добавлен:
16.04.2013
Размер:
480 Кб
Скачать

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

  1. При входе в набор инструкций IA-32 все биты могут быть прочитаны последующими инструкциями IA-32, после выхода из набора инструкций IA-32 эти биты показывают результаты всех предшествующих инструкций IA-32. Ни один из битов EFLAG не изменяет поведение Itanium инструкций при выполнении.

  2. IASDM – это Intel Architecture Software Developer's Manual.

6.2.5. IA-32 регистры с плавающей точкой

Стек IA-32 регистров с плавающей точкой, числовые средства управления и среды с плавающей точкой, отображаются в Itanium регистрах с плавающей точкой FR8-FR15, а имена прикладных регистров размещены так, как показано в табл. 6.6.

Табл. 6.6. Отображение IA-32 регистров с плавающей точкой

Itanium регистр

IA-32 регистр

Размер (бит)

Описание

FR8

ST[(TOS+N)==0]

80

Стек цифровых регистров IA-32.

Обращения к FR8-FR15 с помощью Itanium инструкций игнорируют IA-32 настройку TOS.

Обращения IA-32 используют настройку TOS для получения регистра N.

FR9

ST[(TOS+N)==1]

FR10

ST[(TOS+N)==2]

FR11

ST[(TOS+N)==3]

FR12

ST[(TOS+N)==4]

FR13

ST[(TOS+N)==5]

FR14

ST[(TOS+N)==6]

FR15

ST[(TOS+N)==7]

FCR (AR21)

FCW, MXCSR

64

IA-32 управляющее слово FPU и SSE управляющий регистр

FSR (AR28)

FSW, FTW, MXCSR

64

Слова тегов и состояния FPU IA-32 и SSE состояние

FIR (AR29)

FOP, FCS, FIP

64

Указатель инструкций FPU IA-32

FDR (AR30)

FDS, FEA

48

Указатель данных FPU IA-32

6.2.5.1. IA-32 стек регистров с плавающей точкой

IA-32 регистры с плавающей точкой определены следующим образом:

  • Стек числовых регистров IA-32 отображается в FR8-FR15, используя 80-битный IEEE формат с плавающей точкой Intel 8087.

  • При обращениях набора инструкций IA-32, регистры с плавающей точкой логически отображаются в FR8-FR15, а IA-32 указатель верхушки стека (TOS) содержится в поле FCR.top. FR8 представляет физический регистр после настройки TOS и не обязательно будет вершиной стека логических регистров с плавающей точкой.

  • При обращениях набора инструкций Itanium, номера регистров с плавающей точкой являются физическими, а не функциями числового указателя TOS, например, обращение к FR8 всегда возвращает значение физического регистра FR8, не зависимо от значения TOS. Программы типа Itanium не могут обязательно полагать, что FR8 содержит IA-32 логический регистр ST(0). Настоятельно рекомендуется, чтобы использовались обычные соглашения о вызовах IA-32, которые передают значения с плавающей точкой через память.