- •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.2. Основные регистры.
Набор из 128 (64-битных) регистров обеспечивает главный ресурс для всех целочисленных и мультимедиа- целочисленных вычислений. Они пронумерованы от GR0 доGR127 и доступны для всех программ на всех уровнях привилегий. Каждый основной регистр имеет 64 бита для хранения нормальных данных плюс дополнительный битNaT(Not a Thing), который используется для отслеживания отложенных спекулятивных исключений.
Основные регистры разделены на два подмножества. Регистры от 0 до 31 называются статическими основными регистрами. Причем,GR0 сделан так, что если он является исходным операндом, то всегда читается как ноль, а попытка записи вGR0 вызовет ошибку «Запрещенная операция». Основные регистры с 32 по 127 называютсястековыми основными регистрами. Стековые регистры делаются доступными для программ при выделении окна регистрового стека содержащего программируемое количество локальных и выходных регистров. Это описано в разделе 4.1 «Стек регистров». Части регистрового стека могут быть программно переименованы для ускорения циклов. См. раздел 4.5.1 «Поддержка модульно планируемых циклов».
Основные регистры от 8 до 32 содержат регистры IA-32 – целочисленные, селекторы и дескрипторы сегментов. Подробнее см. раздел 6.2.1 «Размещение общих регистровIA-32».
3.1.3. Регистры с плавающей точкой
Набор из 128 (82-битных) регистров с плавающей точкой используется для всех вычислений с плавающей точкой. Они пронумерованы от FR0 доFR127 и доступны для всех программ на всех уровнях привилегий. Регистры с плавающей точкой разделены на два подмножества. Регистры от 0 до 31 называютсястатические регистры с плавающей точкой. Причем,FR0 иFR1 являются специальными. При использовании в качестве исходного операнда,FR0 всегда читается как +0.0, аFR1 всегда читается как +1.0. Если любой из них использовать в качестве приемника, то вызывается ошибка. Отложенные спекулятивные исключения записываются в виде специального регистрового значения, которое называетсяNaTVal(Not a Thing Value).
Регистры с плавающей точкой от 32 до 127 называются ротируемыми регистрами с плавающей точкой. Эти регистры могут быть программно переименованы для ускорения циклов. См. раздел 4.5.1 «Поддержка модульно планируемых циклов».
Регистры с плавающей точкой от 8 до 32 содержат регистры IA-32 – с плавающей точкой и мультимедиа. Подробнее см. раздел 6.2.5 «Регистры с плавающей точкойIA-32».
3.1.4. Предикатные регистры
Набор из 64 (1-битных) предикатных регистровиспользуется для хранения результатов инструкций сравнения. Эти регистры пронумерованы отPR0 доPR63 и доступны для всех программ на всех уровнях привилегий. Эти регистры используются для условного выполнения инструкций.
Предикатные регистры разделены на два подмножества. Предикатные регистры от 0 до 15 называются статические предикатные регистры. Причем, при использовании в качестве исходного операндаPR0 всегда читается как 1, а при использовании в качестве приемника результат игнорируется. Статические предикатные регистры также используются в условном ветвлении. См. раздел 4.3.1 «Предикация».
Предикатные регистры с 16 по 63 называются ротируемые предикатные регистры. Эти регистры могут быть программно переименованы для ускорения циклов. См. раздел 6.2.5 «Поддержка модульно планируемых циклов».
