October 17 2017 05:03:23
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды логических операций
ФОРМАТЫ ПРЕДСТАВЛЕНИЯ ДАННЫХ И ВЫПОЛНЕНИЕ ОПЕРАЦИЙ

Таблица 2.66 Команды логических операций

Синтаксис Ассемблера Операция
andi. (andis.)
ori. (oris.)
xori. (xoris.)
rA, rS, Ulm
rA, rS, Uimr
A, rS, Ulm
rS L Ulm —> rA ( сдвиг Uim)
rS V Ulm -> rA ( сдвиг Uim)
rS Å Ulm -»rA ( сдвиг Uim)
and (and.)
or (or.)
xor (xor.)
and (nand.)
nor (nor.)
andc (andc.)
ore (ore.)
egv (egv.)
rA, rS, rB
rA, rS, rB
rA, rS, rB
rA, rS, rB
rA, rS, rB
rA, rS, rB
rA, rS, rB
rA, rS, rB
rS L rB -> rA
rS V rB -> rA
rS Å rB -> rA
rS L rB -> rA
rS V rB -> rA
rS L rB -> rA
rS V rB -» rA
rS Å rB -» rA
cntizw (cnitzw.) rA, rS Число старших 0 в rS -> rA

Команда neg меняет знак операнда. Команда extsb преобразует младший байт содержимого регистра rS путем расширения знака в 32-разрядное слово, размещаемое в rD. Команда extsh выполняет аналогичное расширение для 16 младших разрядов (младшее полуслово) содержимого регистра rS.

Команды логических операций (табл. 2.66) производятся над операндами без знака, содержащимися в регистрах (rS, rB) или заданными непосредственно в команде (Ulm). Микропроцессор реализует восемь логических операций - И, ИЛИ, Исключающее ИЛИ, НЕ - И, НЕ - ИЛИ, Запрет, Импликация, Эквивалентность. При выполнении команд, имеющих после мнемокода символ «.», производится установка соответствующих признаков в поле CR0 регистра условий CR. Команды логических операций со сдвигом andis., oris., xoris. перед выполнением операций И, ИЛИ, Исключающее ИЛИ производят сдвиг непосредственного операнда влево на 16 разрядов. В данную группу входит также команда cntizw, определяющая число последовательно расположенных нулей в регистре rS, начиная со старшего разряда. Это число заносится в регистр rА.

Команды сравнения (табл. 2.67) осуществляют вычитание двух операндов, содержащихся в регистрах (rА, rВ) или заданных непосредственно (Sim, Ulm), которые могут быть числами со знаком (знаковое сравнение) или без знака (беззнаковое сравнение). По результатам вычитания осуществляется установка признаков в поле CRi регистра условий CR. Номер поля i = 7...2 задается операндом crfD в команде Ассемблера. Если этот операнд не задан или равен 0, то признаки устанавливаются в поле CR0. Операнд L в этих командах для микропроцессора МРС604 задается равным 0.

Команды сдвигов (табл. 2.67) реализуют многоразрядные логические (slw, srw), арифметические (sraw, srawi) и циклические (rlwinm, rlwnm, rlwimi) сдвиги содержимого регистра rS с размещением результата в гА. Число разрядов сдвига задается непосредственно операндом Ns или содержимым шести младших разрядов регистра rВ. При логических сдвигах влево (команда slw) или вправо (команда srw) освободившиеся разряды заполняются нулями. При арифметическом сдвиге вправо (команды sraw, srawi) в освободившихся слева разрядах дублируется знак исходного операнда.

Циклические сдвиги производятся только влево, причем результат сдвига логически умножается на маску М. Маска формируется в соответствии с задаваемыми в команде номерами начального Mb и конечного Me битов. Биты маски с номерами от Me до Mb имеют значение «1», поэтому соответствующие биты результата сохраняются. Остальные биты маски имеют значение «0», и соответствующие биты результата принимают такое же значение. Полученный после маскирования результат размещается в регистре rА. При выполнении команд rlwinm, rlwnm предыдущее содержимое rА не сохраняется. Команда rlwimi сохраняет в регистре rА значения битов, соответствующих замаскированным битам результата (для которых биты маски равны нулю).

Таблица 2.67 Команды операций сравнения и сдвигов

Синтаксис Ассемблера Операция
cmpi
cmp
cmpli
cmpi
CrfD, L, rA, Sim
CrfD, L, rA, rB
CrfD, L, rA, Uim
CrfD, L, rA, rB
-rA + Sim (знаковое)
-rA + гВ (знаковое)
-rA + Sim (беззнаковое)
-rA + rB (беззнаковое)
swl (swl.)
srw (srw.)
srawi (srwi.)
sraw (sraw.)
rA, rS, rB
rA, rS, rB
rA, rS, Ns
rA, rS, rB
[rS <— s(rB)] —> rS, заполнение нулями
[rS —> s(rB)] -» rA, заполнение нулями
[rS -> s(Ns)] —> rA, заполнение знаком
[rS —> s(rB)] -> rA, заполнение знаком
rlwinm (rlwinm.)
rlwnm (rlwnm.)
rlwimi (rlwimi.)
rA, rS, Ns, Mb, Me
rA, rS, Ns, Mb, Me
rA, rS, Ns, Mb, Me
[rS «- r(Ns)] L М -> rA
[rS <- r(rB)] L М -» rA
([rS<- r(Ns)] L M ) V (rA L М) -> rA

Команды сдвигов могут вызывать установку признаков в поле CR0 регистра CR в соответствии с результатом операции. Для этого после мнемокода команды следует поставить символ «.».

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,254,314 уникальных посетителей