Не требуется любая инструкция, которая может быть построена из других инструкций.
Таким образом, нет необходимости в mul
или div
, так как вы не можете сделать это с повторным сложением или вычитанием, и нет необходимости в sub
, если у вас есть neg
(нивелируют) и номера будут заворачивать, например, с помощью дополнения до двух.
И, конечно же, вы можете уйти с две инструкции, одна для равных, одна для менее - все остальные могут быть построены из комбинаций из них.
Поскольку у вас нет инструкций ввода/вывода, вам, вероятно, потребуется использовать ввод-вывод с памятью, когда связь с другими устройствами осуществляется через доступ к памяти.
И, без родных push
и pop
, вам, вероятно, понадобится реализовать свой собственный стек с выделенным регистром (и ячейкой памяти, так как вы, похоже, не переходите в регистр).
Теперь это не будет хорошая архитектура, но она должна функционировать. Как утверждал Matrix Architect, «есть уровни выживания, которые мы готовы принять».
В качестве стороннего разработчика обратите внимание на центральный процессор RCA1802 (с нескольких дней). Он имел no выделенный программный счетчик или указатель стека, вместо этого реализовывая все это в программном обеспечении (подробнее см. here).
Ну, вы описываете машину на основе регистра, всегда машина на основе стека ... она может быть намного проще. Просто ваши стандартные арифметические/логические операторы, с некоторыми PUSH/POP и, конечно же, JUMP/JUMPT/JUMPF ... oh и фиксированная длина инструкции. –
Нам учили 8085 микропроцессор, и у него не было никаких встроенных реализаций div и умножения. :) – Shubham
Хотите узнать, принадлежит ли это вместо этого на http://programmers.stackexchange.com? –