Каковы примитивные операторы Forth?

Я заинтересован во внедрении системы Forth, просто чтобы получить некоторый опыт создания простой виртуальной машины и среды выполнения.

При запуске в Forth, как правило, сначала узнают о стеке и его операторах (DROP, DUP, SWAP и т. Д.), Поэтому естественно рассматривать их как примитивные операторы. Но это не так. Каждый из них может быть разбит на операторы, которые напрямую манипулируют памятью и указателями стека. Позже вы узнаете о store (!) И fetch (@), которые можно использовать для реализации DUP, SWAP и так далее (ха!).

Так, каковы примитивные операторы? Какие из них должны быть реализованы непосредственно в среде выполнения, из которой могут быть построены все остальные? Я не заинтересован в высокой производительности; Я хочу кое-что, чему я (и другие) могу научиться. Оптимизация оператора может прийти позже.

(Да, я знаю, что могу начать с машины Тьюринга и идти оттуда. Это немного экстремально.)

Изменить: то, что я стремлюсь, похоже на загрузку операционной системы или нового компилятора. Как мне нужно реализовать, как минимум, чтобы я мог построить остальную часть системы из этих примитивных строительных блоков? Я не буду реализовывать это на голом оборудовании; в качестве учебного упражнения я бы написал свою собственную минимальную виртуальную машину.

Ответы на вопрос(7)

Ваш ответ на вопрос