HardWareMan wrote:Разработаем проц, ассемблер к нему и будет все в шоколаде.

Ну тогда всё получается по первоначальному плану: делаем быстрый чисто
4-битный
RISC-процессор сугубо со своей системой команд.
Используем 2 префикса - и получаем 46 инструкции. Вполне хватит, чтобы
сделать её чуть удобнее чем у
PIC-а.
Я немного смутился с 8-битной памятью, но поскольку у
RISC-а память
программ - только на чтение, понибблово она читаться будет легко.
А загружать её будем через аппаратный
SPI - байтами, обсудили уже...
Единственное - нам нужен не обычный ассемблер, а некий
кросс-ассемблер.
Поскольку в нибблах работать неудобно и непривычно, то в ассемблере мы
пишем всё в привычных байтах, ну типа:
Code: Select all
CMP C,B; где C и B - размером в байт
а наш кросс-ассемблер превращает это примерно в следующее:
Code: Select all
mov R1, R3
cmp R5
rnz
mov R0, R2
cmp R4
ret
где
R0,R1 -
Alow,
Ahigh;
R2,R3 -
Clow,
Chigh;
R4,R5 -
Blow,
Bhigh,
а
R0,R1,R2,R3,R4,R5 - наши ниббловые регистры.
Аналогично кросс-ассемблер компилирует и остальные байтовые команды.
К внешним устройствам обращаемся байтами - по два обращения ниббловыми
регистрами в 2-а 4-битных регистра, причем только после второго обращения
даём строб внешнему устройству.
Ну примерно вот так всё. Хорошо, что всё 4-битное: АЛУ не "распухнет".
Систему команд обсуждали уже, но продумать надо ещё...
Мне кажется удобные префиксы -
0Eh и
0Fh, поскольку селектор на
0Eh, он
0Fh уж точно отловит, а остальные
14 (
0h - 0Dh) - просто команды.