Wie programmiert man ein Programmierprogramm?

8 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das war in der Tat ein echte Herausforderung, denn wir haben das Henne-Ei Problem. Und ob ein Programm in Assembler geschrieben wurde, wie kam es in den Mikroprozessor?

Wir haben es in der Urzeit so gemacht:

Per Hand wurden die wichtigsten Befehle (so eine Art von Ur-Boot-loader" per Hand auf einen Zettel geschrieben, also per Hand kodiert. Mühsam, aber nur so ging es, denn der Prozessor selber hatte je nichts, der war "nackt".

Das erste Programmiergerät haben wir uns von Hand selber gebaut und mit einem Mäuseklavier https://de.wiktionary.org/wiki/M%C3%A4useklavier (ein DIP Schalter, bez. mehrere) per Hand die Adressen und die Daten eingestellt und per Hardware die Speicherzelle Adresse für Adresse einzeln programmiert. Dann mit dem Prozessor verbunden (Stecksockel). Die Befehle und deren Hex Codes standen im Datenbuch, ein absolute Heiligtum.

Grauenhaft mühselig, aber es gab früher kaum einen anderen Weg für Anfänger.

War der Urloader dann erstmals im EPROM, konnte man schon einfachste Programme in den Hauptspeicher laden und ausführen lassen, darunter dann auch der innig ersehnte Assembler.

Das ist nun schon Geschichte, da wir auf solche rudimentären Methoden nicht mehr zurück greifen müssen. Aber auch die damals großem Maschinen gingen kaum anders vor. Per Hand wurde die oft Startadresse eingegeben (mit Schaltern an der Frontseite) und zum Glück war schon ein wenig Software im Inneren vorhanden. Aber nur so ganz rudimetär, damit die verfügbaren Datenträger (Lochstreifen oder Karte) gelesen werden konnten. Dort stand dann der nächste Teil drauf, bis die Maschine das Programm ausführte, was man wollte.

Auf der untersten Ebene bestehen Computerprogramme aus Maschinenbefehlen. Der Code wird meistens in hexadezimal geschrieben, befindet sich aber binär in den Registern der CPU. Assemblercode ersetzt Hexadezimalcodes für ausführbare Befehle eins zu eins durch Kommandos, die man 'verstehen' kann, wie push oder mov.  Auf der nächstabstrakten Ebene werden häufig verwendete Befehlssequenzen zusammengefasst und irgendwann hat man eine Bibliothek von Befehlen, die durch Ausführungsstrukturen, wie Schleifen, Sprungmarken, Funktionsaufrufen ergänzt werden. Dann hat man bereits eine höhere Programmiersprache.

Naja, man müsste den compiler in Assembly schreiben. 

Die befehle kommen da auf den Befehlssatz an an. x86 ist etwa der befehlssatz den viele 32 bit prozessoren nutzen https://de.wikipedia.org/wiki/X86-Prozessor . einige prozessoren wie zum beispiel ein ATtiny haben natürlich nicht soviele befehle wie ein 64 bit desktop prozessor. 

Was möchtest Du wissen?