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

4.5. Инструкции переходов

Инструкции перехода производят переключение потока управления на новый адрес. Места переходов выровнены на границы связки, т.е. управление всегда передается на слот с первой инструкцией связки (слот 0). Не требуется, чтобы инструкция перехода была последней инструкцией в группе инструкций. Фактически группа инструкций может содержать произвольно много переходов (при условии, что встречаются нормальные требования зависимостей RAWиWAW). Если переход принят, то будут выполнены инструкции только до принятого перехода. После принятого перехода, следующая выполняемая инструкция будет там, куда делается переход.

Есть три категории переходов: переходы относительно IP, длинные переходы и косвенные переходы. При переходе относительноIPзадается 21-битное знаковое смещение, которое добавляется кIPсвязки содержащей переход для получения результирующего адреса перехода. Смещение позволяет делать переходы на 16М байт вперед или назад. При длинном переходе задается 60-битовое смещение, позволяющее указать адрес перехода в любом месте 64-битного адресного пространства. Из-за длинного непосредственного значения, длинный переход занимает два слота инструкций. При косвенном переходе, для указания адреса перехода используются регистры перехода.

Как показано в табл.4.22, есть несколько типов переходов. Условный переход br.condилиbr– это переход, который принимается, если вычисленное значение предиката есть 1, и не принимается в противном случае. Условный вызовbr.callделает то же самое, но, кроме того, записывает адрес связи (link) в указанный регистр перехода и подстраивает (adjust) стек основных регистров (см. раздел 4.1 «Стек регистров»). Условный возврат br.retделает то же самое, что и косвенный условный переход, плюс подстраивает стек основных регистров. Безусловные переходы, вызовы и возвраты делаются путем указания в инструкции перехода в качестве предикатаPR0 (который всегда 1). Длинные переходыbrl.cond илиbrl, иbrl.callявляются идентичными соответственно сbr.cond илиbr, иbr.callсоответственно, за исключением своих длинных смещений.

Табл.4.22. Типы переходов

Мнемоника

Функция

Условие перехода

Адресация

br.cond или br

Условный переход

Задаётся предикатом

относит.или косв.

br.call

Условный вызов процедуры

Задаётся предикатом

относит.или косв.

br.ret

Условный возврат из процедуры

Задаётся предикатом

косвенная

br.ia

Вызов набора инструкций IA-32

Нет условия

косвенная

br.cloop

Переход счетного цикла

Счетчик цикла

относительная

br.ctop, br.cexit

Модульно- планируемый счетный цикл

Счетчик цикла и подсчет эпилогов

относительная

br.wtop, br.wexit

Модульно- планируемый цикл типа while

Задаётся предикатом и подсчетом эпилогов

относительная

brl.cond или brl

Длинный условный переход

Задаётся предикатом

относительная

brl.call

Длинный условный вызов процедуры

Задаётся предикатом

относительная

Перехода типа счетного цикла (br.cloop) использует прикладной регистрLC(loopcounter– счетчик цикла). ЕслиLCотличен от 0, то из него вычитается 1, и переход принимается. ЕслиLCравен 0, то переход отвергается. Переходы для модульно планируемых циклов (br.ctop, br.cexit, br.wtop, br.wexit) описаны ниже в разделе 4.5.1 «Поддержка модульно планируемых циклов». Циклические переходы (br.cloop, br.ctop, br.cexit, br.wtop, br.wexit) могут располагаться только в слоте 2 связки. Выполнение циклического перехода в слоте 0 или 1 вызовет ошибку «Нелегальная операция».

Для перемещения данных между регистрами перехода и основными регистрами используются инструкции перемещения (mov =br, mov br=). В табл. 4.23 и табл. 4.24 собраны состояния и инструкции связанные с переходами.

Табл.4.23. Состояния, связанные с переходами

Регистр

Функция

BR

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

PR

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

CFM

Маркер текущего окна

PFS

Прикладной регистр предыдущего функционального состояния

LC

Прикладной регистр – счетчик цикла

EC

Прикладной регистр – счетчик эпилогов

Табл.4.24. Инструкции, связанные с переходами

Мнемоника

Действие

br

Переход

brl

Длинный переход

brp

Обеспечение предварительной подсказки о будущем переходе

mov =br

Перемещение из GRвBR

mov br=

Перемещение из BRвGR

Соседние файлы в папке M9