Справочник B вычислительных операций
Mod2 в табл. B.3 – заключаемый в круглые скобки дополнительный модификатор, который состоит из трех или четырех символов, указывающих следующее: Х операнд знаковый (S) или беззнаковый (U), Y операнд знаковый или беззнаковый, входные операнды целые (I) или дробные (F), округление результата к ближайшему (R) при записи в регистровый файл. Опции для mod2 и соответствующие значения кода операции приведены в табл. В.4.
Mod2 |
Код операции |
(SSI) |
110 0 |
(SUI) |
010 0 |
(USI) |
100 0 |
(UUI) |
000 0 |
(SSF) |
111 0 |
(SUF) |
011 0 |
(USF) |
101 0 |
(UUF) |
001 0 |
(SSFR) |
111 1 |
(SUFR) |
011 1 |
(USFR) |
101 1 |
(UUFR) |
001 1 |
Таблица В.4. Дополнительный модификатор (Mod2) команд умножителя
Аналогично, mod1 в табл. В.3 – заключаемый в круглые скобки дополнительный модификатор, который состоит из двух символов, указывающих следующее: входной операнд знаковый (S) или беззнаковый (U), целый (I) или дробный (F). Опции для mod1 и соответствующие значения кода операции приведены в табл. В.5.
Mod1 |
|
Код операции |
(SI) (только для SAT) |
0 1 |
(UI) (только для SAT) |
0 0 |
(SF) |
1 1 |
(UF) |
1 0 |
Таблица В.5. Опции Mod1 умножителя
В Справочник вычислительных операций
RnIMR = Rx * Ry
Синтаксис:
Rn = Rx * Ry mod2
MRF = Rx * Ry mod2
MRB = Rx * Ry mod2
Функция:
Перемножение полей с фиксированной точкой (ПФТ) из регистров Rx и Ry. Если округление определено (только для дробных данных), то результат округляется. Результат помещается или в ПФТ в регистр Rn или в один из регистров накопления MR. Если определен Rn, то в него передается только часть результата, которая имеет одинаковый формат с входным операндом (биты 31 0 для целых, биты 63 32 для дробных чисел). В оставшиеся биты ПФТ регистра Rn записываются нули. Если определены MRF или MRB, то в них помещается весь 80 разрядный результат.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе — сброшен |
MV |
Установлен, если не все старшие биты равны 0 (знаковый или беззнаковый |
|
результат) или 1 (знаковый результат). Число старших бит зависит от |
|
формата. Знаковый результат: для дробного = 33, для целого = 49 |
|
Беззнаковый результат: для дробного = 32, для целого = 48 |
MU |
Установлен, если все старшие 48 бит дробного результата равны 0 |
|
(знаковый или беззнаковый результат) или 1 (знаковый результат), а |
|
младшие 32 бита не все равны 0. Для целого результата нет потери |
|
значащих разрядов |
MI |
Сброшен |
Справочник B вычислительных операций
RnIMR = MR + Rx * Ry
Синтаксис: |
|
Rn = MRF + Rx * Ry |
mod2 |
Rn = MRB + Rx * Ry |
mod2 |
MRF = MRF + Rx * Ry mod2
MRB = MRB + Rx * Ry mod2
Функция:
Умножение ПФТ из регистров Rx и Ry и сложение полученного значения со значением определенного регистра MR. Если округление определено (только для дробных данных), то результат округляется. Результат помещается или в ПФТ в регистр Rn или в один из регистров накопления MR (в тот же самый регистр, из которого брался входной операнд). Если определен Rn, то в него передается только часть результата, которая имеет одинаковый формат с входным операндом (биты 31 0 для целых, биты 63 32 для дробных чисел). В оставшиеся биты ПФТ регистра Rn записываются нули. Если определены MRF или MRB, то в них помещается весь 80 разрядный результат.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе — сброшен |
MV |
Установлен, если не все старшие биты равны 0 (знаковый или беззнаковый |
|
результат) или 1 (знаковый результат). Число старших бит зависит от |
|
формата. Знаковый результат: для дробного = 33, для целого = 49 |
|
Беззнаковый результат: для дробного = 32, для целого = 48 |
MU |
Установлен, если все старшие 48 бит дробного результата равны 0 |
|
(знаковый или беззнаковый результат) или 1 (знаковый результат), а |
|
младшие 32 бита не все равны 0. Для целого результата нет потери |
|
значащих разрядов |
MI |
Сброшен |
В Справочник вычислительных операций
Rn I MR = MR – Rx * Ry
Синтаксис: |
|
Rn = MRF – Rx * Ry |
mod2 |
Rn = MRB – Rx * Ry |
mod2 |
MRF = MRF – Rx * Ry mod2
MRB = MRB – Rx * Ry mod2
Функция:
Умножение ПФТ из регистров Rx и Ry и вычитание результата из значения определенного регистра MR. Если округление определено (только для дробных данных), то результат округляется. Результат помещается или в ПФТ в регистр Rn или в один из регистров накопления MR (в тот же самый регистр, из которого брался входной операнд). Если определен Rn, то в него передается только часть результата, которая имеет одинаковый формат с входным операндом (биты 31 0 для целых, биты 63 32 для дробных чисел). В оставшиеся биты ПФТ регистра Rn записываются нули. Если определены MRF или MRB, то в них помещается весь 80 разрядный результат.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе — сброшен |
MV |
Установлен, если не все старшие биты равны 0 (знаковый или беззнаковый |
|
результат) или 1 (знаковый результат). Число старших бит зависит от |
|
формата. Знаковый результат: для дробного = 33, для целого = 49 |
|
Беззнаковый результат: для дробного = 32, для целого = 48 |
MU |
Установлен, если все старшие 48 бит дробного результата равны 0 |
|
(знаковый или беззнаковый результат) или 1 (знаковый результат), а |
|
младшие 32 бита не все равны 0. Для целого результата нет потери |
|
значащих разрядов |
MI |
Сброшен |
Справочник B вычислительных операций
RnIMR = SAT MR
Синтаксис: |
|
Rn = SAT MRF |
mod1 |
Rn = SAT MRB |
mod1 |
MRF = SAT MRF |
mod1 |
MRB = SAT MRB |
mod1 |
Функция:
Если значение определенного регистра MR больше, чем максимальное значение определяемое форматом данных, то умножитель установит результат в максимальное значение. В противном случае, значение MR не изменяется. Результат помещается или в ПФТ в регистр Rn или в один из регистров накопления MR (в тот же самый регистр, из которого брался входной операнд). Если определен Rn, то в него передается только часть результата, которая имеет одинаковый формат с входным операндом (биты 31 0 для целых, биты 63 32 для дробных чисел). В оставшиеся биты ПФТ регистра Rn записываются нули. Если определены MRF или MRB, то в них помещается весь 80 разрядный результат.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе — сброшен |
MV |
Сброшен |
MU |
Установлен, если все старшие 48 бит дробного результата равны 0 |
|
(знаковый или беззнаковый результат) или 1 (знаковый результат), а |
|
младшие 32 бита не все равны 0. Для целого результата нет потери |
|
значащих разрядов |
MI |
Сброшен |
В Справочник вычислительных операций
RnIMR = RND MR
Синтаксис: |
|
Rn = RND MRF |
mod1 |
Rn = RND MRB |
mod1 |
MRF = RND MRF |
mod1 |
MRB = RND MRB |
mod1 |
Функция:
Округление значения определенного MR к ближайшему до 32 бит (до границы MR1 MR0). Результат помещается или в ПФТ в регистр Rn, или в один из регистров накопления MR (в тот же самый регистр, из которого брался входной операнд). Если определен Rn, то в него передается только часть результата, которая имеет одинаковый формат с входным операндом (биты 31 0 для целых, биты 63 32 для дробных чисел). В оставшиеся биты ПФТ регистра Rn записываются нули. Если определены MRF или MRB, то в них помещается весь 80 разрядный результат.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе сброшен |
MV |
Установлен, если не все старшие биты равны 0 (знаковый или беззнаковый |
|
результат) или 1 (знаковый результат). Число старших бит зависит от |
|
формата. Знаковый результат: для дробного = 33, для целого = 49. |
|
Беззнаковый результат: для дробного = 32, для целого = 48. |
MU |
Установлен, если все старшие 48 бит дробного результата равны 0 |
|
(знаковый или беззнаковый результат) или 1 (знаковый результат), а |
|
младшие 32 бита не все равны 0. Для целого результата нет потери |
|
значащих разрядов. |
MI |
Сброшен |
Справочник B вычислительных операций
MR = 0
Синтаксис:
MRF = 0
MRB = 0
Функция:
Обнуление значения определенного регистра MR. Все 80 бит (MR2, MR1, MR0) обнуляются.
Флаги состояния:
MN Сброшен
MV Сброшен
MU Сброшен
MI Сброшен
В Справочник вычислительных операций
MR=Rn / Rn=MR
Синтаксис: |
|
MR0F = Rn |
Rn = MR0F |
MR1F = Rn |
Rn = MR1F |
MR2F = Rn |
Rn = MR2F |
MR0B = Rn |
Rn = MR0B |
MR1B = Rn |
Rn = MR1B |
MR2B = Rn |
Rn = MR2B |
Функция:
При передаче в регистр MR содержимое ПФТ регистра Rn помещается в определенный регистр MR. Оставшиеся биты ПФТ Rn игнорируются. При передаче из регистра MR содержимое определенного регистра MR помещается в ПФТ регистра Rn. В оставшиеся биты ПФТ регистра Rn записываются нули.
Вычислительное поле: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 21 |
20 |
19 |
18 |
17 |
|
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
0000 |
|
|
|
Т |
|
|
AI |
|
|
RK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Регистр MR определяется полем AI, регистр данных – RK. Направление передачи определяется Т (0=в регистровый файл, 1=в регистр MR).
AI |
Регистр MR |
Флаги состояния |
0000 |
MR0F |
MN |
Сброшен |
0001 |
MR1F |
MV |
Сброшен |
0010 |
MR2F |
MU |
Сброшен |
0100 |
MR0B |
MI |
Сброшен |
0101 |
MR1B |
|
|
0110 |
MR2B |
|
|
Справочник B вычислительных операций
Fn = Fx * Fy
Синтаксис:
Fn = Fx * Fy
Функция:
Умножение операндов с плавающей точкой из регистров Fx и Fy. Результат помещается в регистр Fn.
Флаги состояния:
MN |
Установлен, если результат отрицательный, иначе — сброшен |
MV |
Установлен, если несмещенный порядок результата >127, иначе — сброшен |
MU |
Установлен, если несмещенный порядок результата <–126, иначе — |
|
сброшен |
MI |
Установлен, если любой из входных операндов NAN или входные |
|
операнды равны ±∞ и ±0, иначе сброшен |
Один и тот же регистр в регистровом файле начинается с префикса “F” (в исходном коде ассемблера), когда он используется в вычислениях с плавающей точкой. И начинается с префикса “R”, когда используется в вычислениях с фиксированной точкой. Например, следующие команды используют одни и те же регистры:
F0=F1*F2; умножение с плавающей точкой
R0=R1*R2; умножение с фиксированной точкой
Префиксы F и R не влияют на передачу 32 разрядных (или 40 разрядных) данных; они только определяют, как ALU, умножитель, или устройство сдвига обрабатывают данные. F и R могут быть прописными и строчными; в ассемблере не учитывается регистр клавиатуры.
В Справочник вычислительных операций
В.2.3 Операции устройства сдвига
В этом разделе описываются операции устройства сдвига. В табл. В.6 приводятся синтаксис и коды операций. Подробное описание каждой операции дается ниже.
Устройство сдвига выполняет операции с 32 разрядными полями с фиксированной точкой (ПФТ) регистрового файла. Для операций устройства сдвига с двумя входными операндами Y операнд может быть содержимым регистрового файла или непосредственным значением данных в команде. В каждой форме такой команды используется одинаковый код операции. Однако, операция непосредственного сдвига разрешается только в команде типа 6, у которой в коде операции имеется поле для непосредственных данных.
Синтаксис |
Код операции |
Rn = LSHIFT Rx BY Ry | <data8> |
0000 0000 |
Rn = Rn OR LSHIFT Rx BY Ry | <data8> |
0010 0000 |
Rn = ASHIFT Rx BY Ry | <data8> |
0000 0100 |
Rn = Rn OR ASHIFT Rx BY Ry | <data8> |
0010 0100 |
Rn = ROT Rx BY Ry | <data8> |
0000 1000 |
Rn = BCLR Rx BY Ry | <data8> |
1100 0100 |
Rn = BSET Rx BY Ry | <data8> |
1100 0000 |
Rn = BTGL Rx BY Ry | <data8> |
1100 1000 |
BTST Rx BY Ry | <data8> |
1100 1100 |
Rn = FDEP Rx BY Ry | <bit6>:<len6> |
0100 0100 |
Rn = Rn OR FDEP Rx BY Ry | <bit6>:<len6> |
0110 0100 |
Rn = FDEP Rx BY Ry | <bit6>:<len6> (SE) |
0100 1100 |
Rn = Rn OR FDEP Rx BY Ry | <bit6>:<len6> (SE) |
0110 1100 |
Rn = FEXT Rx BY Ry | <bit6>:<len6> |
0100 0000 |
Rn = FEXT Rx BY Ry | <bit6>:<len6> (SE) |
0100 1000 |
Rn = EXP Rx |
1000 0000 |
Rn = EXP Rx (EX) |
1000 0100 |
Rn = LEFTZ Rx |
1000 1000 |
Rn = LEFTO Rx |
1000 1100 |
Rn = FPACK Fx |
1001 0000 |
Fn = FUNPACK Rx |
1001 0100 |
Модификаторы команд: |
|
(SE) – дополнение по знаку внесенного или извлеченного поля (EX) – извлечение расширенного порядка
Таблица В.6. Операции устройства сдвига