Zum Inhalt springen
Blog

Unter der Haube: was passiert, wenn dein Code läuft

Eine Ausarbeitung aus meiner Ausbildung, als interaktives Karten-Deck statt als PDF.

Mein Ausbilder hat mir eine kleine Ausarbeitung zu Programmier-Basics aufgegeben. Ich hätte ein PDF abgeben können. Stattdessen ist ein interaktives Dokument daraus geworden. Unter der Haube hat zehn Kapitel, eines pro Bildschirm, jedes Konzept als Animation statt als Absatz.

Warum nicht die üblichen Basics

Zu Variablen, Schleifen und Verzweigungen gibt es tausend Erklärungen, und alle sagen dasselbe. Interessanter finde ich die Ebene darunter: Was macht der Computer eigentlich mit meinem Text?

Das Deck geht deshalb den Weg vom Quelltext zur laufenden Maschine. Es zeigt, wie aus einer Zeile C zehn Bytes Maschinencode werden, warum ein Typ nur eine Leseanweisung für ein Stück Speicher ist, wie sich bei jedem Funktionsaufruf ein Rahmen auf den Stapel legt, und warum ein Stack Overflow, ein Memory Leak und ein Segmentation Fault am Ende genau daraus folgen.

Was man anfassen kann

Kapitel 05 ist der Kern. Dort baut sich der Aufrufstapel für fakultaet(3) Schritt für Schritt auf: Man klickt sich durch acht Zustände, sieht die Rahmen übereinander wachsen, jeden mit seinem eigenen n, und dann auf dem Rückweg wieder verschwinden. Die markierte Zeile im Code läuft mit.

Der Rest ist bewusst ehrlich gehalten: Jede Karte hat unten eine Fußnote, die sagt, was die Vereinfachung verschweigt. Dass die ersten Argumente auf x86-64 in Registern übergeben werden und gar nicht im Rahmen landen, zum Beispiel. Oder dass „Python ist interpretiert” genau genommen CPython beschreibt und nicht die Sprache. Das ist der Unterschied zwischen einem hübschen Bild und einer Ausarbeitung.

Die Zahlen darin sind nachgerechnet, nicht geschätzt. Die Assembly stammt aus gcc -O2 und objdump, die Stack-Größe aus ulimit -s.

Zum Deck