
- •3. Исполнительная среда.
- •3.1. Состав прикладных регистров
- •3.1.1 Резервируемые и игнорируемые регистры и поля
- •3.1.2. Основные регистры.
- •3.1.3. Регистры с плавающей точкой
- •3.1.4. Предикатные регистры
- •3.1.5. Регистры переходов
- •3.1.6. Указатель инструкций.
- •3.1.7. Маркер текущего окна
- •3.1.8. Прикладные регистры
- •3.1.8.1. Регистры ядра (kr0-7 –ar0-7)
- •3.1.8.2. Регистр конфигурации стека регистров (rsc–ar16)
- •3.1.8.3. Указатель вспомогательной памяти rse(bsp–ar17)
- •3.1.8.10. Предыдущее функциональное состояние (pfs–ar64)
- •3.1.8.11. Регистр счетчика цикла (lc–ar65)
- •3.1.8.12. Регистр счетчика эпилога (ec–ar66)
- •3.1.9. Регистры данных мониторинга производительности (pmd)
- •3.1.10 Маска пользователя (um)
- •3.1.11. Регистры идентификации процессора
- •3.2. Память
- •3.2.1. Модель адресации прикладной памяти
- •3.2.2. Адресация блоков и выравнивание
- •3.2.3. Упорядочивание байтов
- •3.3. Обзор кодирования инструкций
- •3.4. Рассмотрение последовательности инструкций
- •3.4.1. Специальные случаи зависимости raw
- •3.4.2. Специальные случаи зависимости waw
- •3.4.3. Специальные случаи зависимости war
- •3.4.4. Поведение процессора при нарушениях зависимости
- •3.5. Неопределенное поведение
3.1.5. Регистры переходов
Набор из 8 (64-битных) регистров переходовиспользуется для хранения информации о ветвлении. Они пронумерованы отBR0 доBR7 и доступны для всех программ на всех уровнях привилегий. Эти регистры используются для создания целевых адресов переходов при непрямых переходах. Подробнее см. раздел 4.5 «Инструкции переходов».
3.1.6. Указатель инструкций.
Указатель инструкций (IP) хранит адрес связки содержащей текущую исполняемую инструкцию. Этот регистр может быть прочитан прямо с помощью инструкцииmov ip. Прямая запись вIPневозможна, но он увеличивается после выполнения инструкций и может быть установлен в новое значение при переходе. Поскольку связки инструкций являются 16-байтовыми и выровнены по 16-байтовой границе, то в младших четырех битахIPвсегда содержатся нули. См. раздел 3.3 «Обзор кодирования инструкций». При выполнении набора инструкцийIA-32,IPсодержит 32-битный виртуальный линейный адрес текущей выполняемой инструкцииIA-32, который дополнен нулями до 64 бит. ИнструкцииIA-32 выровнены на границу байта, поэтому младшие четыре битаIPпредназначены для выполнения инструкцийIA-32. Детальнее о выполнении набора инструкцийIA-32 см. раздел 6.2.2 «Указатель инструкцийIA-32».
3.1.7. Маркер текущего окна
Каждое окно стека основных регистров связано с маркером окна. Маркер окна описывает состав стека основных регистров. Маркер текущего окна (CFM–CurrentFrameMarker) хранит состав текущего окна стека. РегистрCFMне может быть прямо прочитан или записан (см. раздел 4.1 «Стек регистров»).
Маркер окна содержит размеры изменяемых кусочков плюс значения трех баз переименования регистров (используется в ротации регистров). Схема маркера окна дана на рис.3.2, а описание полей в табл.3.2.
При процедурном вызове, CFMкопируется в полеPFM(PreviousFrameMarker– маркер предыдущего окна) находящееся в регистреPFS(PreviousFunctionState– предыдущее функциональное состояние) (см. раздел 3.1.8.10). ВCFMзаписывается новое значение, соответствующее новому созданному стековому окну, без локальных или ротационных регистров, но с набором выходных регистров, которые являются выходными регистрами вызвавшей программы. Дополнительно все регистры базы переименованных регистров (RegisterRenameBase-RRB) устанавливаются в 0. См. раздел 4.5.1 «Поддержка модульно- планируемых циклов».
37 |
32 |
31 |
25 |
24 |
18 |
17 |
14 |
13 |
7 |
6 |
0 |
rrb.pr |
rrb.fr |
rrb.gr |
sol |
sor |
sof | ||||||
6 |
7 |
7 |
4 |
7 |
7 |
Рис.3.2. Формат маркера окна.
Таблица 3.2. Описание полей маркера окна.
Поле |
Биты |
Описание |
sof |
6:0 |
Размер окна стека |
sor |
13:7 |
Размер локальной части окна стека |
sol |
17:14 |
Размер ротационной части стекового окна (количество ротационных регистров равно 8 * sol) |
rrb.gr |
24:18 |
База переименования регистров для основных регистров |
rrb.fr |
31:25 |
База переименования регистров для регистров с плавающей точкой |
rrb.pr |
37:32 |
База переименования регистров для предикатных регистров |