- •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.8. Символьные строки и подсчет совокупности
Небольшой набор инструкций ускоряет операции над символьными и битовыми полями данных.
4.8.1. Символьные строки
Инструкции вычисления нулевого индекса (czx.l, czx.r) обрабатывают исходный общий регистр либо как восемь 1-байтовых, либо как четыре 2-байтовых элемента и записывают в приемный общий регистр индекс первого найденного нулевого элемента. Если в источнике нет нулевых элементов, то в приемник записывается значение большее, чем максимально возможный индекс (8 для 1-байтовой формы, 4 для 2-байтовой формы). Инструкцияczx.lсканирует источник слева направо, а самый левый элемент имеет индекс 0. Инструкцияczx. rсканирует источник справа налево, а самый правый элемент имеет индекс 0. В табл.4.33 собраны инструкции вычисления нулевого индекса.
Табл. 4.33. Инструкции поддержки строк.
Мнемоника |
Действие |
1-байт |
2-байт |
czx.l |
Локализует первый нулевой элемент слева направо |
х |
х |
czx.r |
Локализует первый нулевой элемент справа налево |
х |
х |
4.8.2. Подсчет совокупности
Инструкции подсчета совокупности (popcnt–populationcount) подсчитывают количество единичных битов в источнике и записывают это значение в приемник.
4.9. Передача уровня привилегий
Три инструкции могут вызвать изменение уровня привилегий: break(прервать),epc(ввести привилегированный код) иbr.ret(переход при возврате их процедуры). Инструкцияbreakопределена для вызова специальной ошибки «Инструкцияbreak», которая может использоваться для передачи уровня привилегий. Инструкцияbreakсодержит непосредственное значение, которое делается доступным специальному обработчику ошибки. Инструкцияepcувеличивает уровень привилегий без вызова прерывания или передачи потока управления. Новый уровень привилегий определяется элементом таблицыTLBдля страницы содержащейepc, если трансляция виртуального адреса для извлечения инструкции допустима. Если уровень привилегий, указываемый полемPFS.ppl(в прикладном регистре предыдущего функционального состояния) ниже, чем текущий уровень привилегий (указываемый полемPSR.cplв регистре состояния процессора), тоepcвызывает ошибку «Нелегальная операция». Инструкция br.retприменяется для понижения уровня привилегий, еслиPFS.pplниже, чемPSR.cpl. Инструкция br.retникогда не будет увеличивать уровень привилегий.