- •4. Модель прикладного программирования.
- •4.1. Стек регистров
- •4.1.1. Управление стеком регистров
- •4.1.2. Инструкции стека регистров
- •4.2. Инструкции целочисленного вычисления
- •4.2.1. Арифметические инструкции
- •4.2.2. Логические инструкции
- •4.2.3. 32-Битные адреса и целые
- •4.2.4. Инструкции битовых полей и сдвигов
- •4.2.5. Большие константы.
- •4.3. Инструкции сравнения и предикация
- •4.3.1. Предикация
- •4.3.2. Инструкции сравнения
- •4.3.3. Типы сравнения
- •4.3.4. Передачи предикатных регистров
- •4.4. Инструкции доступа к памяти
- •4.4.1. Инструкции загрузки
- •4.4.2. Инструкции сохранения
- •4.4.3. Семафорные инструкции
- •4.4.4. Спекуляция по управлению
- •4.4.4.1. Концепции спекуляции по управлению
- •4.4.4.2. Спекуляция по управлению и инструкции
- •4.4.4.3. Спекулятивность по управлению и сравнения
- •4.4.4.4. Спекуляция по управлению без восстановления
- •4.4.4.5. Контроль операционной системы над откладыванием исключений
- •4.4.4.6. Сливание и заливание регистров
- •4.15. Инструкции, связанные со спекуляцией по управлению
- •4.4.5. Спекуляция по данным
- •4.4.5.1. Концепция спекуляции по данным
- •4.4.5.2. Спекуляция по данным и инструкции
- •4.4.5.3. Детализирование функциональности структуры alat и инструкции связанные с этим.
- •4.4.5.3.1. Выделение и проверка элементов alat
- •4.4.5.3.2. Аннулирование элементов alat.
- •4.4.5.4. Комбинирование спекуляций по управлению и по данным
- •4.4.5.5. Окончания инструкций для управления alat
- •4.4.6. Управление иерархией памяти и непротиворечивость
- •4.4.6.1 Иерархия памяти и подсказки
- •4.4.6.2. Согласованность памяти
- •4.4.7. Упорядочивание доступа к памяти
- •4.5. Инструкции переходов
- •4.5.1. Поддержка модульно планируемых циклов.
- •4.5.2. Подсказки предсказаний переходов.
- •4.5.3. Инструкции предсказания переходов
- •4.6. Инструкции мультимедиа.
- •4.6.1. Параллельная арифметика
- •4.6.2. Параллельные сдвиги
- •4.6.3. Преобразование данных
- •4.7. Пересылки регистрового файла
- •4.8. Символьные строки и подсчет совокупности
- •4.8.1. Символьные строки
- •4.8.2. Подсчет совокупности
- •4.9. Передача уровня привилегий
4.2.4. Инструкции битовых полей и сдвигов
Для сдвигов и операций над битовыми полями в основных регистрах, определены четыре класса инструкций: произвольные сдвиги, инструкции фиксированного сдвига и маскирования, 128-битные сквозные сдвиги, и специальные операции сравнения для проверки индивидуальных битов в основном регистре. Инструкции сравнения для проверки знакового бита (tbit) илиNaTбита (tnat) описаны в разделе «Инструкции сравнения и предикация».
Инструкции произвольного сдвига сдвигают содержимое основного регистра на величину заданную в другом основном регистре. Инструкции знакового сдвига вправо (shr) и беззнакового сдвига вправо (shr.u) сдвигают содержимое регистра вправо с заполнением знаковых позиций соответственно, либо знаковым разрядом, либо нулями. Инструкция сдвига влево (shl) сдвигает содержимое регистра влево.
Инструкции фиксированного сдвига и маскирования (extr, dep) являются обобщенными формами фиксированных сдвигов. Инструкция извлечения (extr) копирует произвольное битовое поле из основного регистра в младшие биты принимающего регистра. Остальные биты приемника прописываются либо знаком битового поля (extr), либо нулями (extr.u). Длина и начальная позиция поля задаются двумя непосредственными операндами. Это обязательно для операции сдвига вправо и маскирования. Простой сдвиг вправо на фиксированное расстояние может быть задан использованиемshrс непосредственным значением, указывающим размер сдвига. Это является только трансляцией псевдооперации для инструкции извлечения, где извлекаемое поле расширится на все левые биты регистра.
Инструкция размещения depберет поле либо из младших значащих битов основного регистра, либо непосредственное значение из всех нулей или всех единиц, помещает его в произвольную позицию и заполняет результат слева и справа от поля либо битами из второго основного регистра (dep), либо нулями (dep.z). Длина и начальная позиция поля задаются двумя непосредственными операндами. Это обязательно для операции сдвига влево и маскирования. Простой сдвиг влево на фиксированное расстояние может быть задан использованиемshlс непосредственным значением, указывающим размер сдвига. Это является только трансляцией псевдооперации для инструкцииdep.z, где размещаемое поле расширится на все левые биты регистра.
Инструкция парного сдвига вправо (shrp) выполняет 128-битовый сквозной сдвиг. Он выделяет произвольное 64-битовое поле из 128-битового поля сформированного путем соединения двух исходных общих регистров. Начальная позиция задается непосредственным значением. Это может быть использовано для ускорения адаптации невыровненных данных. Операция циклического битового сдвига (rotate) может быть выполнена с помощьюshrp, где для обоих операндов используется один и тот же регистр.
В табл.4.6 собраны инструкции битовых полей и сдвигов.
Табл.4.6 Инструкции битовых полей и сдвигов.
Мнемоника |
Действие |
shr |
Сдвиг вправо с учетом знака |
shr.u |
Сдвиг вправо без учета знака |
shl |
Сдвиг влево |
extr |
Извлечение с учетом знака (сдвиг вправо и маскирование) |
extr.u |
Извлечение без учета знака (сдвиг вправо и маскирование) |
dep |
Размещение (сдвиг влево, маскирование и слияние) |
dep.z |
Размещение в нулях (сдвиг влево, маскирование и слияние) |
shrp |
Парный сдвиг вправо |