Maschinencode ist die Form, in der ein Prozessor Anweisungen unmittelbar ausführt: Zahlen, die für Rechenschritte, Sprünge und Zugriffe auf den Speicher stehen. Jede Prozessorfamilie hat ihren eigenen.
- Maschinencode
Die Anweisungen in der Form, in der ein Prozessor sie unmittelbar ausführt.
Beispiel: „Der Compiler übersetzt den Quelltext in Maschinencode für genau diese Prozessorfamilie.“Erzeugt wird er vom Compiler; eine interpretierte Sprache kommt ohne diesen Schritt aus.
Abgrenzung zum Quelltext: Den schreiben Menschen, den Maschinencode liest nur der Prozessor.
Wie Maschinencode entsteht
Durch Übersetzung. Ein Compiler liest den Quelltext, prüft ihn und erzeugt daraus die Anweisungsfolge für eine bestimmte Prozessorfamilie und ein bestimmtes Betriebssystem.
Deshalb läuft ein übersetztes Programm nicht überall. Wer dieselbe Anwendung für mehrere Systeme anbietet, übersetzt sie mehrfach, auch wenn der Quelltext derselbe bleibt.
Dieselbe Funktion in drei Stufen. Zuerst der Quelltext, den ein Mensch schreibt:
int summe(int a, int b) {
return a + b;
}Daraus wird für eine x86-64-Maschine diese Anweisungsfolge; rechts steht, welche Bytes der Prozessor tatsächlich liest:
summe:
lea eax, [rdi+rsi] ; 8d 04 37
ret ; c3Warum niemand Maschinencode schreibt
Weil er nichts erklärt. Eine Zeile Quelltext wird zu einer Handvoll Anweisungen, die einzeln keinen Zusammenhang mehr erkennen lassen; was das Programm tun soll, steht nirgends mehr.
Dazu kommt die Bindung an die Hardware. Wer in dieser Form schreibt, legt sich auf eine Prozessorfamilie fest und schreibt alles neu, sobald sie wechselt.
Was Maschinencode für die Praxis bedeutet
Vor allem einen Unterschied im Tempo. Was vorher übersetzt wurde, startet schneller und läuft schneller als etwas, das bei jedem Lauf erst gelesen und gedeutet wird.
Im Webumfeld spielt das selten die Hauptrolle, weil dort die Wartezeiten auf Datenbanken und Netz überwiegen. Sichtbar wird der Unterschied erst, wo tatsächlich gerechnet wird.