Вам просто нужна MOV
инструкция x86 .
"M / o / Vfuscator (короткое 'o', звучит как" mobfuscator ") компилирует программы в инструкции" mov "и только инструкции" mov ". Арифметика, сравнения, переходы, вызовы функций и все остальное, что нужно программе, - это все выполняется с помощью операций mov; здесь нет самомодифицирующегося кода, нет вычислений, запускаемых транспортом, и нет других форм мошенничества, не связанного с перемещением ".
Если серьезно, эти примитивы не будут реализовывать Lisp-машину. Машине нужны такие средства, как ввод-вывод и сборка мусора. Не говоря уже о механизме вызова функций! Хорошо, у вас есть семь примитивов, которые являются функциями. Как машина вызывает функцию?
Правильное понимание того, что эти примитивы делают возможным, состоит в том, что они раскрывают набор команд универсальной машины Тьюринга . Поскольку эти инструкции являются «Лиспи», мы оговоримся (говоря на Лиспе) украдкой называем это «Лисп-машиной». «Универсальный» означает, что машина является программируемой: применив некоторые комбинированные инструкции к универсальной машине Тьюринга, мы можем создать экземпляр любой машины Тьюринга. Но пока все это чисто математическая конструкция.
Чтобы на самом деле смоделировать эту UTM - реализовать ее физически, чтобы исследовать на компьютере, нам нужна машина, которая дает нам возможность фактически вводить те формы, которые создают машины Тьюринга из комбинаций этих семи инструкций Лиспа. И нам также нужна какая-то форма вывода; машина должна, по крайней мере, сказать нам «да», «нет» или «подождите, я все еще бегу».
Другими словами, единственный способ, которым эти семь инструкций могут практически работать, - это если они размещены на более крупной машине, которая обеспечивает среду.
Также обратите внимание на то, что семь примитивов Грэма не имеют явной поддержки чисел, поэтому вам придется строить их из функций (техника «цифр Чёрча»). Никакая производственная реализация Lisp не делает таких сумасшедших вещей.