На самом деле необходимо считать три слова: два операнда и саму
команду. Если не используется внешняя память, то такое считывание
происходит за один машинный цикл.
Если из внешней памяти необходимо считать два слова, например,
команду и данное или два слова данных из ПД и ПП, то для выполнения
команды необходим еще один дополнительный цикл. Если из внешней
памяти необходимо считать три слова (команда и два слова данных), то
требуется два дополнительных цикла.
Операция вычисления должна быть безусловной. Допустимы все
команды ALU, MAC кроме команд непосредственных сдвигов, а также
команд DIVS и DIVQ. Результаты вычислений должны быть записаны в
регистры результатов вычислительных блоков: результаты ALU в AR,
результаты МАС в MR.
Фундаментальным принципом выполнения многофункциональных
команд является то, что регистры (и память) считываются в начале цикла
выполнения команда, а записываются в конце. Для реализации этого
принят обычный (слева направо) порядок записи составляющих
элементов команды: сначала арифметическая операция, а затем операции
чтения. Программист может нарушить этот порядок записи, но ассемблер,
выдав предупреждение, сгенерирует одинаковый машинный код. Выдачу
предупреждения можно подавить, отключив проверку семантики с
помощью ключа s.
Принятый порядок доступа к регистрам данных вычислительных
устройств (сначала считывание, потом запись) позволяет использовать
один и тот же регистр в качестве источника для одной операции и
приемника для другой. Например, команда
MR=MR+MX0*MY0(UU), MX0 = DM(I0, M0), MY0 = DM(I4, M4);
является правильной, причем содержимое регистров MХ0 и MY0
сначала считывается для выполнения арифметической операции, а затем
записывается операциями пересылки. Можно эту команду записать в
обратном порядке
MX0 = DM(I0, M0), MY0 = DM(I4, M4), MR=MR+MX0*MY0(UU);
но ассемблер, выдав предупреждение, сформирует такой же
машинный код команды как в первом примере.
Флаги состояния: флаги устанавливаются арифметическими
командами, как они устанавливаются в не многофункциональных
командах (см. пп. 1.17.5-1.17.7).
1.17.10. Прочие команды