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

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

Парный сдвиг вправо

Соседние файлы в папке M9