Скачиваний:
57
Добавлен:
16.04.2013
Размер:
480.26 Кб
Скачать

6.2. Модель состояния прикладных регистров ia-32

Как показано на рис. 6.3 и в табл. 6.1, универсальные регистры IA-32, селекторы сегментов и дескрипторы сегментов отображаются в младших 32 битах универсальных регистровItanium, отGR8 доGR31. Стек регистров с плавающей точкой, ММХ регистры иSSEрегистры отображаются вItaniumрегистрах с плавающей точкой отFR8 доFR31. Заливкой выделены разные условные типы (подробнее описанные далее): желтый – типIA-32иобщийтип, серый – типundef, белый – типunmodи регистры, содержащие константы.

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

Некоторые Itaniumрегистры аппаратно изменены в неопределенное состояние, как побочный эффект процесса выполнения набора инструкцийIA-32, что отмечено в табл. 6.1 и на рис. 6.2. Вообще состояниеItaniumсистемы не влияет на выполнение набора инструкцийIA-32. Код типаItaniumможет обращаться ко всем регистрам (включаяIA-32), в то время как обращения набора инструкцийIA-32 ограничены видимым состоянием прикладных регистровIA-32.

Регистрам назначены следующие условные типы на период переходов между наборами инструкций IA-32 иItanium.

  • IA-32. Такой регистр содержит, в течение выполнения набора инструкцийIA-32, некоторый регистрIA-32. Ожидаемые значенияIA-32 должны быть загружены перед переключением в набор инструкцийIA-32. После завершения инструкцийIA-32, эти регистры содержат результаты выполнения инструкцийIA-32. Эти регистры могут содержать произвольное значение в течение выполнения инструкцииItanium, согласно программным соглашениямItanium. Для этих регистров, программное обеспечение должно следовать соглашениям о вызовахIA-32 иItanium.

НАБОР ПРИКЛАДНЫХ РЕГИСТРОВ

General register

NaT Bits

63

0

0

GR0=0

GR1 – GR3

GR4 – GR7

GR8 (EAX)

GR9 (ECX)

GR10 (EDX)

GR11 (EBX)

GR12 (ESP)

GR13 (EBP)

GR14 (ESI)

GR15 (EDI)

GR16-GR17 (selectors)

GR18-GR23

GR24

(segment descr.)

GR25 – GR26

GR27 – GR31 (segment descr.)

GR32-GR127


Branch register

63

0

BR0

BR1

. . .

BR5

BR6 – BR7

63

0

IP (PC)

37

0

CFM

63

5

0

PRS

User Mask

CPU Identifiers

63

0

CPUID0

CPUID1

. . .

CPUIDn

FP register

Performance Monitor Data Registers

81

0

FR0 = 0.0

FR1 = 1.0

FR2 – FR5

FR6 – FR7

FR8-FR15 (MMX0-7,FP0-7)

FR16-FR31 (XMM0-7)

FR32-FR127

63

0

PMD0

PMD1

. . .

PMDm


Predicate

0

P0

1

P1

P2

P3

. . .

P61

P62

P63

Application registers

63

0

AR0 - AR7

KR0-KR7

AR16

RSC

AR17

BSP

AR18

BSPSTORE

AR19

RNAT

AR21

FCR

AR24

EFLAG

AR25

CSD

AR26

SSD

AR27

CFLG

(CR0-CR4)

AR28

FSR

AR29

FIR

AR30

FDR

AR32

CCV

AR36

UNAT

AR40

FPSR

AR44

ITC

AR64

PFS

AR65

LC

AR66

EC

AR127

Рис. 6.3. Модель прикладных регистров IA-32

  • Неопределенный (undef). Регистр, отмеченный как неопределенный, может быть использован в качестве рабочей области при выполнении процессором инструкцийIA-32 и не гарантирует сохранение состояния при переключении набора инструкций.

  • Общий. Общие регистры содержат значения, которые имеют подобные функциональные возможности в любой системе команд. Например, указатель стека (ESP) и указатель инструкций (IP) являются общими.

  • Не изменяемый (unmod). Этот регистр не изменяется при выполненииIA-32. Код типа может полагаться на эти значения не изменяемые в процессе выполнения набора инструкцийIA-32. Регистр будет иметь одно и то же значение, что при входе в набор инструкцийIA-32, то и при выходе из набора инструкцийIA-32.

Табл. 6.1. Схема распределения прикладных регистров IA-32

Itanium регистр

IA-32 регистр

Тип

Размер

Описание

Целочисленные регистры общего назначения

GR0

Содержит 0

GR1-3

undefF

Рабочие при выполнении IA-32

GR4-7

unmod

Сохраняемые регистры Itanium

GR8

EAX

IA-32

32A

Регистры IA-32 общего назначения

GR9

ECX

GR10

EDX

GR11

EBX

GR12

ESP

GR13

EBP

GR14

ESI

GR15

EDI

GR16{15:0}

DS

64

Селекторы IA-32

GR16{31:16}

ES

GR16{47:32}

FS

GR16{63:48}

GS

GR17{15:0}

CS

GR17{31:16}

SS

GR17{47:32}

LDT

GR17{63:48}

TSS

GR18-23

undefF

Рабочие при выполнении IA-32

GR24

ESD

IA-32

64

Дескрипторы сегментов IA-32 (регистровый формат)B

GR25-26

undef F

Рабочие при выполнении IA-32

GR27

DSD

IA-32

64

Дескрипторы сегментов IA-32 (регистровый формат)B

GR28

FSD

GR29

GSD

GR30

LDTDC

GR31

GDTD

GR32-127

undefD

Пустые, при выполнении кода IA-32

Среда процесса

IP

IP

общий

64

Указатель инструкций, общий для IA-32 иItanium

Регистры с плавающей точкой

FR0

Содержит +0.0

FR1

Содержит +1.0

FR2-5

unmod

Сохраняемые регистры Itanium

FR6-7

undef

Пустые, при выполнении кода IA-32

FR8

MM0/FP0

IA-32

64/80

IA-32 регистрыMMXтехнологии (совмещены с 64-битнойFPмантиссой)

IA-32 регистры с плавающей точкой (отображение физических регистров)E

FR9

MM1/FP1

FR10

MM2/FP2

FR11

MM3/FP3

FR12

MM4/FP4

FR13

MM5/FP5

FR14

MM6/FP6

FR15

MM7/FP7

FR16-17

XMM0

IA-32

64

IA-32 регистрыSSE(StreamingSIMDExtension– потоковогоSIMDрасширения)

Младшие 64-бита регистра XMM0 соответствуютFR16{63:0}, а старшие 64-бита регистраXMM0 соответствуютFR17{63:0}

FR18-19

XMM1

FR20-21

XMM2

FR22-23

XMM3

FR24-25

XMM4

FR26-27

XMM5

FR28-29

XMM6

FR30-31

XMM7

FR32-127

undef F

Пустые, при выполнении кода IA-32

Предикатные регистры

PR0

Содержит 1

PR1-63

undef F

Пустые, при выполнении кода IA-32

Регистры переходов

BR0-5

unmod

Сохраняемые регистры Itanium

BR6-7

undef

Пустые, при выполнении кода IA-32

Прикладные регистры

RSC

unmod

Сохраняемые регистры Itanium,

не используются при выполнении IA-32

BSP

BSPSTORE

RNAT

CCV

undef F

64

Пустые, при выполнении кода IA-32

UNAT

unmod

Сохраняемый регистр Itanium,

не используется при выполнении IA-32

FPSR.sf0

unmod

Регистр числового состояния и управления Itanium

FPSR.sf1,2,3

undef F

Пустые, при выполнении кода IA-32

FSR

FSW, FTW, MXCSR

IA-32

64

IA-32 слова состояния и тегов, а также состояниеSSEиз регистраMXCSR

FCR

FCW, MXCSR

64

IA-32 управляющее слово, а также управлениеSSEиз регистраMXCSR

FIR

FOP, FIP, FCS

64

IA-32 код операции, селектор кода иIPдля средыx87

FDR

FEA, FDS

64

IA-32 селектор данных и смещение для средыx87

ITC

TSC

общий

64

Общий IA-32 счетчик меток реального времени и интервальный таймерItanium

PFS

unmod

Сохраняемые регистры Itanium, не используются при выполненииIA-32.

Предыдущее значение ECсохраняется вPFM

LC

EC

EFLAG

EFLAG

IA-32

32

Арифметические и системные флаги IA-32, записывает некоторые условия битов черезCPLиEFLAG.iopl

CSD

CSD

64

Сегмент кода IA-32 (формат регистра)B

SSD

SSD

64

Сегмент стека IA-32 (формат регистра)B

CFLG

CR0/CR4

64

Флаги управления IA-32

CR0=CFLG{31:0},CR4=CFLG{63:32}, разрешена запись толькоCPL=0

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

  2. Форматы дескриптора сегмента отличаются от формата памяти IA-32 (детальнее см. в разделе 6.2.3 «Сегментные регистрыIA-32»). Модификация селектора или дескриптора не устанавливает бит обращения/занятости в памяти.

  3. Дескрипторы LDT/GDTне защищены от модификации кодом типаItaniumна уровне пользователя.

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

  5. Отображение IA-32 регистров с плавающей точкой является физическим и не отображением от вершины стекаIA-32.

  6. Эти регистры используются процессором и могут быть оставлены в неопределенном состоянии после выполнения набора инструкций IA-32. Программное обеспечение должно сохранить эти значения перед входом в набор инструкцийIA-32.