Скачиваний:
62
Добавлен:
16.04.2013
Размер:
430.08 Кб
Скачать

4.2. Инструкции целочисленного вычисления

Исполнительные целочисленные устройства поддерживают набор инструкций для арифметических и логических операций, для операций сдвига и для манипулирования битовыми полями. Кроме того, они поддерживают набор инструкций для ускорения операций с 32-битными данными и указателями.

Арифметические, логические и ускоренные 32-битные операции могут выполняться на устройствах типа Iи типа М.

4.2.1. Арифметические инструкции

Сложение и вычитание (add, sub) поддерживаются как в обычной форме с двумя исходными операндами, так и в специальной форме с тремя исходными операндами. При сложении в форме с тремя входными операндами к сумме двух исходных регистров добавляется единица. При вычитании в форме с тремя входными операндами из разности двух исходных регистров вычитается единица. Трехоперандые формы повторяют ту же мнемонику, что и двухоперандные формы, но добавляют «1» в качестве третьего исходного операнда.

Непосредственная форма сложения использует регистр и 14-битное непосредственное значение; непосредственная форма вычитания использует регистр и 8-битное непосредственное значение. В обоих случаях перед сложением или вычитанием производится расширение знака непосредственного значения. Непосредственная форма получается просто путем подстановки непосредственного значения на место первого операнда. Кроме того, сложение может выполняться между регистром и 22-битным непосредственным операндом, но при этом исходным регистром может быть только GR0,GR1,GR2 илиGR3.

Инструкция сдвига влево и сложения (shladd) сдвигает регистровый операнд влево на 1-4 бита и добавляет результат ко второму регистровому операнду. В табл. 4.3. собраны целочисленные арифметические инструкции.

Табл. 4.3. Целочисленные арифметические инструкции.

Мнемоника

Действие

add

Сложение

add …,1

Трехоперандное сложение

sub

Вычитание

sub …,1

Трехоперандное вычитание

shladd

Сдвиг влево и сложение

Заметим, что инструкции целочисленного умножения описаны при использовании регистров с плавающей точкой (подробнее см. ниже раздел «Инструкции целочисленного умножения и сложения»). Целочисленное деление выполняется программно аналогично делению с плавающей точкой.

4.2.2. Логические инструкции

Имеются инструкции выполняющие логическое И (and), ИЛИ (or) и исключающее ИЛИ (xor) между двумя регистрами, либо между регистром и непосредственным значением. Инструкцияandcmвыполняет логическое И между регистром или непосредственным значением и дополнением от другого регистра. В табл.4.4 собраны целочисленные логические инструкции.

Табл.4.4 Целочисленные логические инструкции

Мнемоника

Действие

and

Логическое И

or

Логическое ИЛИ

andcm

Логическое И с дополнением

xor

Логическое исключающее ИЛИ

4.2.3. 32-Битные адреса и целые

Поддержка 32-битных адресов обеспечивается в форме инструкций сложения, которые выполняют копирование бита региона. Это поддерживает модель трансляции виртуальных адресов (подробнее см. раздел 4.1.9 «32-битная виртуальная адресация» во втором томе). Инструкция сложения 32-битного указателя (addp) складывает два регистра или регистр и непосредственное значение, обнуляет старшие 32-бита результата, а затем копирует биты 31:30 из второго исходного операнда в биты 62:61 результата. Инструкцияshladdpработает аналогично, но перед выполнением сложения сдвигает первый исходный операнд влево на 1-4 бита, причем обеспечивается только в двухрегистровой форме.

Кроме того, поддержка 32-битных целых обеспечивается через инструкции 32-битного сравнения и инструкции, выполняющие знаковое и нулевое расширение. Инструкции сравнения описаны ниже в разделе «Инструкции сравнения и предикация». Инструкции расширения знака и нуля (sxt, zxt) берут 8-битное, 16-битное или 32-битное значение из регистра и расширяют его соответственно до 64-битного результата.

В табл.4.5 собраны инструкции для 32-битных указателей и 32-битных целых.

Табл.4.5 Инструкции для 32-битных указателей и 32-битных целых

Мнемоника

Действие

addp

Сложение 32-битного указателя

shladdp

Сдвиг влево и сложение 32-битного указателя

sxt

Расширение знака

zxt

Расширение нулями

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