Я проектирую серийный компьютер TTL, и я борюсь за выбор архитектуры, более подходящей для бэкэнда компилятора LLVM (я хочу иметь возможность запускать любое программное обеспечение С++ там). Не будет MMU, нет умножения/деления, нет аппаратного стека, нет прерываний.
У меня есть 2 основных варианта:
1) 8-разрядная память, 8-битная ALU, 8-разрядные регистры (~ 12-16). Ширина адреса 24 бит. Поэтому мне нужно будет использовать 3 регистра как IP и 3 регистра для любой ячейки памяти.
Излишне говорить, что любые вычисления адресов были бы чистой болью для реализации в компиляторе.
2) 24-битная память, 24-битная ALU, 24-битные регистры (~ 6-8). Плоская память, приятно. Недостатки состоят в том, что из-за серийного характера конструкции каждая операция будет занимать 3 раза больше часов, даже если мы будем работать с некоторыми булевыми. Ширина данных в 24-битной памяти дорогая. И сложнее реализовать в аппаратных средствах вообще.
Вопрос: Как вы думаете, возможно ли реализовать все возможности С++ на этом 8-битном, основанном на стеках аппаратном обеспечении, или мне нужно иметь более сложное оборудование для генерации кода с разумным качеством и скоростью?