Я заинтересован в внедрении системы Forth, так что я могу получить некоторый опыт создания простой виртуальной машины и среды выполнения.
При запуске в Forth обычно вы узнаете о стеке и его операторах (DROP, DUP, SWAP и т.д.) во-первых, поэтому естественно думать об этом как о примитивных операторах. Но это не так. Каждый из них может быть разбит на операторы, которые непосредственно манипулируют памятью и указателями стека. Позже вы узнаете о store (!) И fetch (@), которые могут быть использованы для реализации DUP, SWAP и т.д. (Ha!).
Итак, какие примитивные операторы? Какие из них должны быть реализованы непосредственно в среде выполнения, из которой можно построить все остальные? Меня не интересует высокая производительность; Я хочу, чтобы я (и другие) мог учиться. Оптимизация оператора может появиться позже.
(Да, я знаю, что я могу начать с машины Тьюринга и перейти оттуда. Это немного экстремально.)
Изменить: То, к чему я стремлюсь, сродни загрузке операционной системы или нового компилятора. Что мне нужно реализовать, как минимум, чтобы я мог построить остальную часть системы из этих примитивных строительных блоков? Я не буду реализовывать это на голом оборудовании; как учебное упражнение, я бы написал свою собственную минимальную виртуальную машину.