Zurück zum Index
Autoren-Aufruf! Ich habe seit Jahren keine Zeit und Lust mehr, die Inhalte von Mandalex zu pflegen, weswegen sie teilweise veraltet und inkorrekt sind. Wenn ein Wikipedia-Autor über diese Seite stolpert und Lust hat, meine Texte irgendwie in Wikipedia zu integrieren, darf er oder sie mir eine Email schreiben, ich würde die einzelnen Seiten dann gerne abgeben, auf dass ich die Seite irgendwann schliessen kann. Und bevor die Frage kommt: Nein, ich zahle nichts.
Die Theorie des ultimativen RISC (Reduced instruction set computer) besagt, dass es möglich ist, einen Prozessor zu kreieren, der genau 1 Befehl kennt und doch alle Aufgaben erledigen kann, die jeder andere Prozessor auch kann.
Dabei wird angenommen, dass dem Computer ein unendlich grosser Speicher zur Verfügung steht. Genauer gesagt besitzt das RAM unendlich viele Zellen, in denen jeweils unendlich viele Bits Platz finden.
Des weiteren Wird angenommen, dass die Konstante 1 fest in der Hardware verlötet ist, woraus alle anderen Ganzzahlen konstruiert werden können. Der einzige Befehl, der gegeben ist, ist der folgende:
STJ x,y,z
STJ steht dabei für "Substract, Test and Jump". Folgendes wird durch den Befehl ausgeführt:
- Substract: x:=x-y
- Test: if x<=0
- Jump: then goto z else goto next instruction
Dabei muss noch beachtet werden, dass x, y und z stets als Adresse betrachtet werden. Bei der berechnung x:=x-y und der Überprüfung x<=0 werden jedoch die Inhalte der Adressen genommen. Die Adresse z zeigt also immer auf die Instruktion, die als nächstes ausgeführt werden soll. Da dies meistens die nächste in der Reihe ist, hat man sich für diesen Fall die relative Adressangabe ".+1" ausgedacht, was nichts anderes bedeutet, als gehe vom momentanen Befehl (.) zum nächsten (+1).
Folgendes ist eine einfache Art, nur mittels diesen einen Befehls eine Speicherzelle auf Null zu setzen: STJ a, a, .+1. Dabei wird der Inhalt von a von sich selbst abgezogen und sodann (da nun a=0 ist) an die nächste Adresse gesprungen (was auch ohne den Test so gemacht worden wäre).
Folgendes ist ein Beispiel für das Kopieren eines Speicherinhaltes:
STJ t, t, .+1 setze t auf 0 STJ t, b, .+1 setze t auf -b STJ a, a, .+1 setze a auf 0 STJ a, t, .+1 setze a auf -t = b
Hier noch ein Beispiel, um die Zahl 2 zu konstruieren:
STJ x, x, .+1 setze x auf 0 STJ x, 1, .+1 setze x auf -1 STJ x, 1, .+1 setze x auf -2 STJ y, y, .+1 setze y auf 0 STJ y, x, .+1 setze y auf -x = 2