Es gibt viele Möglichkeiten, etwas zu implementieren, in das man eine Turing-Maschine implementieren kann.
Bei Prozessoren ist wahrscheinlich das Registermaschinenmodell am besten geeignet . Das einfachste von diesen (in Bezug auf Symbole) ist das Multiband-Zwei-Symbol ( mark
und blank
). Wenn Sie sich für etwas entscheiden, das nicht ganz so esoterisch ist, können Sie die Befehle inc(r)
, dec(r)
und jz(r,z)
(Sprung, wenn das Register r
Null ist z
) oder clr(r)
(Löschen r
) inc
, je(i,j,z)
(Sprung, wenn die Register i und j gleich dem Befehl z sind) verwenden.
Ich habe die Erwähnung einer Registriermaschine gesehen, die ist:
- inc (i, m) - Inkrementiere das Register i und gehe zu Zeile m
- jzdec (i, m1, m2) - Wenn das Register i 0 ist, gehe zu Zeile m, sonst dekrementiere i und gehe zu Zeile m2
Das ist auch komplett - es ist eine Minsky-Registermaschine, obwohl es andere Einschränkungen für die Daten auf dem Band gibt (es muss eine Gödel-Nummer sein, die den Zustand und nicht einzelne Register speichert).
Das ist es. Nichts mehr.
Warum werden diese Ultra Risc-Prozessoren nicht stattdessen verwendet? Es ist ein echtes Problem, einen Compiler für sie zu schreiben, und Sie geben viele andere Dinge auf, die der Prozessor tun kann. Es ist wirklich schön, ein bitweises zu haben and
und add
nicht zu versuchen, alles mit inkrementierenden Registern und Schleifen zu tun. Das ist die Basis einer bevorzugten Programmiersprache mit dem Titel Brainfuck, die 8 Anweisungen enthält.
>
Inkrementieren Sie den Datenzeiger
<
Dekrementieren Sie den Datenzeiger
+
Inkrementieren Sie die Daten am Datenzeiger
-
Dekrementieren Sie die Daten am Datenzeiger
.
Die Daten werden am Datenzeiger ausgegeben
,
Leseeingang, Speichern der Daten am Datenzeiger
[
Wenn die Daten am Zeiger Null sind, anstatt den Befehlszeiger um eins vorwärts zu bewegen, springen Sie vorwärts zum Befehl nach dem übereinstimmenden ]
Befehl
]
Wenn die Daten am Zeiger ungleich Null sind, anstatt den Befehlszeiger vorwärts zu bewegen, springen Sie zum Befehl nach dem übereinstimmenden ]
Befehl zurück
Man kann Compiler für Brainfuck finden, obwohl es wirklich keinen Spaß macht, auch nur einfache Dinge darin zu machen. Es sei denn, Sie genießen die Frustration, die der Zweck der Sprache ist.
Verwandte Lesung: