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

6.1.3.2. Инструкция перехода к ia

Инструкция br.iaиспользуется для безусловного перехода к набору инструкцийIA-32. АдресатыIA-32 задаются с помощью 32-битного указателя виртуального адреса (но не эффективного адреса). ВиртуальныйIA-32 адрес усекается до 32 бит. Подсказки перехода дляbr.iaдолжны всегда устанавливаться как предсказывающие статистически принятый переход. Процессор переключается в набор инструкцийIA-32 следующим образом:

IP{31:0} = BR[b]{31:0}

IP{32:63} = 0

EIP{31:0} = IP{31:0} – CSD.base

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

Программное обеспечение должно гарантировать, что до использования перехода, и селектор, и дескриптор сегмента загружены должным образом. Если целевое значение EIPвыходит за границу кодового сегмента, либо имеется нарушение привилегий сегментного кода, то на целевой инструкцииIA-32 вызываетсяIA-32 исключениеGPFault(0).

Процессор не гарантирует, что набор инструкций Itanium, генерирующий записи в поток инструкцииIA-32, наблюдаем для процессора. Детальнее можно посмотреть в разделе 6.3.3 «Самомодифицирующийся код». Перед входом в систему командIA-32, основанное наItaniumпрограммное обеспечение должно гарантировать, что все предшествующие окна стека регистров сброшены в память. Все регистры остающиеся в текущем и предшествующем окнах стека регистров останутся в неопределенном состоянии после выполнения набора инструкцийIA-32. Программное обеспечение не может полагаться на значения этих регистров после переключения набора инструкций. Детали есть ниже в разделе 6.4.1 «Механизм стека регистров».

6.1.4. Переключения режимов работы ia-32

Как описано ранее в разделе 6.1.2 «Выполнение набора инструкций IA-32», инструкции jmpe, br.iaиrfi, а также прерывания могут переключать процессор между двумя видами наборов инструкций. Допускаются переключения между архитектуройItaniumи всеми основными режимамиIA-32. Как показано на рис. 6.2br.iaиrfiпереключают процессор из набора инструкцийItaniumлибо вIA-32 режимVM86, либо в реальный режим, либо защищенный режим. В то же времяjmpeи прерывания переключают процессор изIA-32 режимаVM86, реального режима, защищенного режима в набор инструкцийItanium. Переключения между режимамиVM86, реальным и запрещенным, задается теми же самыми средствами, которые заданы в“Intel Architecture Software Developer’s Manual”.

PSR.is &

!CR0.pe

Защищенный режим IA-32

PSR.is &

CR0.pe &

EFLAG.vm

PSR.is &

CR0.pe &

!EFLAG.vm

PSR.is & CR0.pe &

! EFLAG.vm

Реальный режим IA-32

Режим VM86 IA-32

!PSR.is

!PSR.is

PSR.is&

!CR0.pe

Набор инструкций Itanium

PSR.is &

CR0.pe &

EFLAG.vm

Рис.6.2. Переключение режимов наборов инструкций.

Интерфейсный код, базирующийся на Itanium, ответственен за установку и загрузку непротиворечивой среды защищенного режима, реального режима или режимаVM86 (например, загрузить сегментные селекторы и дескрипторы и т.п.), как это описано в разделе 6.2.3.2 «Дескриптор сегмента и целостность среды». Процессор применяет дополнительные проверки дескриптора сегмента, чтобы гарантировать, что операции выполнены в непротиворечивой манере.