Я исходил из того, что поле 00R00 - это всегда источник, а поле 000NN - это приемник, поэтому так и назвал.
Хотя, в командах расширенной арифметики получается, что наоборот.
Можно переименовать в микрокоде, если смущает.
- - - Добавлено - - -
Проверка 'if (Rd=R7) GOTO 0x21' на шаге 0x0C - это универсальный рудимент от других команд, использующих же этот шаг.
Для MUL он бессмысленный.
Это я вижу, но декодируется все универсально и одними и теми же методами. Правое поле универсализировано, как источник.
Поэтому и проверка в конце команды Rd=R7, предполагая, что Rd закодирован правым полем.
Перепишу микрокод для MUL, чтобы не путать общественность)
- - - Добавлено - - -
Поменял поля местами в описании
Alex_K (01.12.2020)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я думаю, что это сделано для ускорения.
Если отдать все на откуп стандартной микропрограмме извлечения следующей инструкции, то будет:
0x01 - попытка выборки кэшированного слова, но его нет. Тогда перейдем на 0x21
0x21 - кэшировать слово
0x01 - попытка номер два. Бинго!
А если проверка будет в самом обработчике конкретной инструкции, то сразу пойдем на шаг 0x21, не делая лишних телодвижений через недействительный шаг 0x01.
Таким образом, проверка в конце команды ускоряет выполнение на 4 такта, в случае, если кэш недействительный из-за записи результата в R7.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)