
Maschinencode
Maschinencode ist die einzige Sprache, die ein Prozessor direkt ausführen kann: eine lange Folge von Zahlen, die jeweils einen winzigen Befehl bedeuten. Alles, was Menschen programmieren, muss am Ende in diese Form übersetzt werden.
Der Prozessor ist das Rechenteil eines Computers, das alle Befehle abarbeitet. Er versteht keine Wörter und keine Sätze, sondern nur Zahlen. Maschinencode ist genau diese Zahlenfolge: eine sehr lange Kette von Nullen und Einsen, in der jeder Abschnitt einen einzelnen Befehl bedeutet. Ein solcher Befehl ist winzig klein, zum Beispiel: addiere zwei Zahlen, oder hole einen Wert aus dem Speicher. Für Menschen ist das praktisch unlesbar, für den Prozessor ist es die einzige verständliche Form. Jedes Programm auf deinem Handy oder Laptop liegt am Ende als Maschinencode vor.
Die unterste Stufe, an der jede Software ankommt
Menschen schreiben Programme in Sprachen wie Python, Java oder C. Diese Sprachen benutzen englische Wörter und Zeichen, die man lesen und diskutieren kann. Der Prozessor kann damit nichts anfangen. Deshalb steht am Ende jeder Programmierarbeit eine Übersetzung in Maschinencode. Ohne diesen Schritt bleibt der schönste Programmtext nur Text in einer Datei.
Maschinencode erklärt auch, warum Software nicht überall läuft. Verschiedene Prozessortypen verstehen verschiedene Zahlenbefehle. Ein Programm für die Chips in älteren Windows-Rechnern läuft deshalb nicht ohne Weiteres auf den Apple-Chips neuerer MacBooks. Die beiden Familien heißen x86 und ARM, und ihr Maschinencode ist schlicht nicht derselbe. Genau darum gibt es von vielen Programmen mehrere Downloadversionen.
Für das Tempo eines Computers ist diese Ebene ebenfalls entscheidend. Wie schnell ein Programm läuft, hängt davon ab, wie geschickt die Befehlsfolge aufgebaut ist. Zwei Programme können dasselbe leisten und trotzdem unterschiedlich lange rechnen.
Vom Quelltext zur Befehlsfolge
Die Übersetzung übernimmt ein Programm namens Compiler. Er liest den vom Menschen geschriebenen Text, prüft ihn auf Fehler und erzeugt daraus die passende Zahlenfolge. Ein einziger Befehl im Quelltext wird dabei oft zu Dutzenden Maschinenbefehlen. Der Compiler ordnet sie zusätzlich so an, dass der Prozessor möglichst wenig warten muss.
Ein einzelner Maschinenbefehl besteht typischerweise aus zwei Teilen. Der erste Teil sagt, was zu tun ist, etwa addieren oder vergleichen. Der zweite Teil sagt, mit welchen Daten. Damit Menschen darüber reden können, gibt es Assembler: eine Schreibweise, in der jeder Maschinenbefehl ein kurzes Kürzel bekommt, zum Beispiel ADD für Addition. Assembler ist also fast dasselbe wie Maschinencode, nur in lesbarer Notation.
Nicht jede Sprache wird vorab komplett übersetzt. Python-Programme werden zur Laufzeit Stück für Stück verarbeitet, was flexibler, aber langsamer ist. Ein verbreiteter Irrtum lautet, moderne Sprachen würden Maschinencode überflüssig machen. Das stimmt nicht: Er entsteht nur später und unsichtbarer.
Warum das Thema bei KI-Chips ständig auftaucht
Im Alltag bemerkt man Maschinencode kaum, aber man stößt dauernd auf seine Folgen. Wenn eine App im Store getrennt für iPhone und Android angeboten wird, steckt unter anderem dieser Unterschied dahinter. Auch Virenscanner arbeiten teilweise auf dieser Ebene, weil Schadsoftware oft nur als fertige Befehlsfolge vorliegt.
In Wirtschaftsnachrichten begegnet dir das Thema meist im Zusammenhang mit KI-Hardware. Grafikchips von Nvidia sind so erfolgreich, weil es dafür ausgereifte Software gibt, die KI-Berechnungen in effizienten Maschinencode übersetzt. Konkurrenten haben nicht nur schlechtere Chips, sondern vor allem schwächere Übersetzungswerkzeuge. Analysten nennen das einen Burggraben, also einen schwer angreifbaren Vorsprung.
Interessant ist auch die umgekehrte Richtung: KI-Modelle schreiben inzwischen selbst Programmtext. Sie erzeugen dabei fast immer lesbaren Quelltext, nicht direkt Maschinencode. Die Übersetzung bleibt Aufgabe des Compilers, weil dieser Schritt zuverlässig und überprüfbar sein muss.