Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Архитектура часть 4..doc
Скачиваний:
42
Добавлен:
16.04.2013
Размер:
430 Кб
Скачать

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 – population count) подсчитывают количество единичных битов в источнике и записывают это значение в приемник.

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 никогда не будет увеличивать уровень привилегий.