Programme ändern sich selbst
In einem der vorhergehenden Abschnitte haben wir gesagt, dass John von Neumann die Idee hatte, die Programme im Arbeitsspeicher abzulegen, statt direkt von einem externen Datenträger auszuführen, wie das etwa beim deutschen Rechner ZUSE Z3 noch der Fall war. Unabhängig davon, dass der Arbeitsspeicher eines Rechners meist sehr schnell ist, ergeben sich daraus noch ganz andere Möglichkeiten.
Aufgabe 1: Programm-Analyse
Überlege zunächst theoretisch, was das folgende Programm tut und notiere kurz Deine Überlegungen. Teste dann am Simulator, ob die Ergebnisse des Simulationslauf zu Deinen Überlegungen passen.
Beobachte vor allem, was im Laufe der Ausführung mit der Speicherstelle 001 geschieht.
000: TAKE 007 001: SAVE 100 002: INC 001 003: DEC 008 004: TST 008 005: JMP 000 006: HLT 000 007: 042 008: 013
Aufgabe 2: Reihenweise Zahlen
a)
Ändere das Programm so ab, dass es nicht immer die gleiche Zahl in den Speicher schreibt, sondern fortlaufende Zahlen, also etwa 42, 43, 44, usw.
b)
Führe eine weitere Änderung durch, und zwar so, dass die Zahlen nur in die geraden Speicherstellen ab Speicherstelle 100 geschrieben werden, also 100, 102, 104, usw.
Aufgabe 3: "Computervirus"
a)
Schreibe ein Programm, das sich selbst im Speicher vermehrt, also sich selbst an eine andere Stelle des Speichers, etwa ab Speicherstelle 50 kopiert.
b)
Jetzt wird's echt schwierig: Ändere das Programm so ab, das es nach dem "Vermehrungsvorgang" in die Kopie spingt, und diese sich wiederum vermehrt.
Quellen
- [1]: Selbstmodifikation von Programmen - Urheber: PD - Lizenz: Inf-Schule.de