3.3.1.1. Команды ALU
Стандартные функции ALU включают в себя сложение, вычитание,
логические функции (and, or, xor), инкрементирование, декрементирование,
очистка, формирование абсолютного значения, образование отрицательного
числа. (Есть две функции образования отрицательных значений: «-»
реализует вычитание в дополнительном коде, NOT – делает инверсию
(обратный код)). Функция PASS пропускает указанный список операндов без
изменения, но тестирует и запоминает статусную
информацию (нуль/знак)
для дальнейшего использования. Типичное представление команды сложения
ALU выгладит следующим образом:
;
[IF condition] AR = xop + yop
AF + C
+ yop + C
Аналогично выглядят команды для вычитания и логических операций: AND,
OR, XOR. Если в команде выбраны опции AR и «+ yop» и если xop и yop есть
содержимое MR1 и AF, то безусловная команда будет выглядеть так:
AR = MR1 + AF;
Входами
ALU (xop, yop) могут быть входные регистры AX0, AX1 и AY0, AY1.
Кроме того, yop может быть нулем или из регистра обратной связи ALU
(AF), а xop может приходить из регистра результата AR, или по шине R-bus
из регистров результата умножителя-аккумулятора (MR0, MR1, MR2), а также
из регистров сдвигателя (SR1, SR2). Это устраняет много
команд –
пересылок, сокращает код программы и время ее выполнения. Выходом молу
может быть или регистр результата AR, или регистр обратной связи AF.
Если в команде выбрана условная функция, то проверяется выбранное
условие и при выполнении этого условия команда выполняется. Если
условие не выполняется, то выполняется пустой командный цикл (nop). Если
условие
не устанавливается, то команды выполняются безусловно. Условия
70