И стрёмно в том плане, что ежели мне вдруг захочется ещё таких регистров добавить, то их будет сложно вписать в такую конструкцию.
Поэтому - революция! Теперь для доступа к SFR есть всего 2 команды (чтение и запись по указанному номеру), а спецрегистров может быть всего 16 штук по 4 бита в каждом.
Ыть!
Вот таперича-то можно и о прерываниях подумать - ведь какой-нибудь из этих регистров запросто может содержать, например, адрес обработчика (а то и целой таблицы, хехе!).
А ещё, в принципе, и сохранение адреса возврата тоже можно прикрутить, и даже кой-какой стэк -- т.е. забрезжило появление инструкций типа CALL-RET
После этой обрезки набор команд оказался объёмом аккурат 32 штуки.
Это значит, что аппаратная реализация дешифратора должна получиться довольно-таки простой.
Правда, при добавлении новых инструкций она обратно усложнится, но совсем на чуть-чуть.
Что-то вырисовывается.
*спец они потому, что у них есть побочные эффекты. Например, регистр INDEX управляет доступом к памяти данных, а POINTER - задаёт адрес перехода. То есть, для этих регистров может не выполняться правило коммутативности записи, например.
Регистры общего назначения побочными эффектами не обладают: они просто сохраняют данные, как и полагается.
** по одной команде на чтение и запись верхней и нижней половинки каждого из двух этих регистров. Сначала показалось, что так будет проще.