Sie benötigen lediglich eine x86- MOV
Anweisung .
"Der M / o / Vfuscator (kurz 'o', klingt wie" mobfuscator ") kompiliert Programme in" mov "-Anweisungen und nur in" mov "-Anweisungen. Arithmetik, Vergleiche, Sprünge, Funktionsaufrufe und alles andere, was ein Programm benötigt, sind Alles wird durch Mov-Operationen ausgeführt. Es gibt keinen selbstmodifizierenden Code, keine durch den Transport ausgelöste Berechnung und keine andere Form des Nicht-Mov-Betrugs. "
Im Ernst, diese Grundelemente implementieren keine Lisp-Maschine. Eine Maschine benötigt Einrichtungen wie E / A und Speicherbereinigung. Ganz zu schweigen von einem Funktionsaufrufmechanismus! Okay, Sie haben sieben Grundelemente, die Funktionen sind. Wie ruft die Maschine eine Funktion auf?
Das richtige Verständnis von dem, was diese Grundelemente ermöglichen, dass sie aussetzen den Befehlssatz eines Universal - Turing - Maschine . Da diese Anweisungen "Lispy" sind, nennen wir dies durch einen Versprecher (der mit einem Lisp spricht) schleichend eine "Lisp-Maschine". "Universal" bedeutet, dass die Maschine programmierbar ist: Mit einigen Kombinationsanweisungen, die auf die Universal Turing Machine angewendet werden, können wir jede Turing Machine instanziieren. Bisher ist das alles ein rein mathematisches Konstrukt.
Um diese UTM tatsächlich zu simulieren - realisieren Sie sie physisch, um sie auf einem Computer zu erkunden -, benötigen wir eine Maschine, mit der wir tatsächlich die Formulare eingeben können, mit denen Turing-Maschinen aus Kombinationen dieser sieben Lisp-Anweisungen erstellt werden. Und wir brauchen auch irgendeine Form von Ausgabe; die Maschine, um uns zumindest "Ja", "Nein" oder "Warten Sie, ich laufe noch" zu sagen.
Mit anderen Worten, die einzige Möglichkeit, wie diese sieben Anweisungen praktisch funktionieren können, besteht darin, dass sie auf einem größeren Computer gehostet werden, der die Umgebung bereitstellt.
Beachten Sie auch, dass Grahams sieben Grundelemente keine explizite Unterstützung für Zahlen haben, sodass Sie sie aus Funktionen erstellen müssten ("Church Numbers" -Technik). Keine Produktions-Lisp-Implementierung macht so eine verrückte Sache.