- •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.4. Указатель вспомогательной памяти для сохранений памяти (bspstore – ar18)
- •3.1.8.5. Сборный регистр NaT для rse (rnat – ar19)
- •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 – Current Frame Marker) хранит состав текущего окна стека. Регистр CFM не может быть прямо прочитан или записан (см. раздел 4.1 «Стек регистров»).
Маркер окна содержит размеры изменяемых кусочков плюс значения трех баз переименования регистров (используется в ротации регистров). Схема маркера окна дана на рис.3.2, а описание полей в табл.3.2.
При процедурном вызове, CFM копируется в поле PFM (Previous Frame Marker – маркер предыдущего окна) находящееся в регистре PFS (Previous Function State – предыдущее функциональное состояние) (см. раздел 3.1.8.10). В CFM записывается новое значение, соответствующее новому созданному стековому окну, без локальных или ротационных регистров, но с набором выходных регистров, которые являются выходными регистрами вызвавшей программы. Дополнительно все регистры базы переименованных регистров (Register Rename Base - 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 |
База переименования регистров для предикатных регистров |
