Минимальный теоретический набор инструкций без сохранения состояния без составных инструкций - PullRequest
0 голосов
/ 10 сентября 2018

С тех пор, как я научился манипулировать сборкой в ​​колледже, я был очарован идеей начать как можно меньше и наращивать до бесконечной сложности.Я работал над своим собственным теоретическим минимальным набором инструкций, который избегает составных инструкций, таких как «subleq».Проблема, с которой я сталкиваюсь с такого рода инструкциями, состоит в том, что они действуют как две (или более) отдельные инструкции с сохраненным состоянием.Другими словами, их можно разбить на (IBM Pseudocode):

S       R0,NUMBER
CLI     R0,XL4'00'
BNH     DESTINATION

Таким образом, минимальный набор инструкций, который я хочу использовать для построения более сложной задачи, уже должен быть разбит на части и не должен содержать состояния.

До сих пор я придумал три инструкции: (s) разорвал, (n) и, (j) - верх.Есть один аккумулятор и счетчик ПК - больше ничего нет.Все инструкции занимают два бита, за которыми следуют X битов, содержащих относительный адрес, что означает отсутствие «немедленных» значений.Я могу загрузить значение в аккумулятор, используя следующие инструкции (8 бит):

00 000111    LOAD    S   HOLDER  ; first we must zero-out the accumulator
01 000110            N   HOLDER
01 000101            N   HOLDER
00 000100            S   HOLDER
01 000011            N   HOLDER  ; accumulator is now equal to zero
01 XXXXXX            N   NUMBER  ; load number into accumulator
10 000010            J   NEXT    ; jump over the helper to the next instruction
00 000000    HOLDER  =   0
XX XXXXXX    NEXT    ...

Должно стать очевидным, что редактирование инструкций позволяет эффективно выполнять переходы, но я не совсем уверенкак выполнить такую ​​задачу еще.Что-то настолько простое, что все еще завершено по Тьюрингу, или это просто идея в небе?

...