Wie Befehle funktionieren
Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 4 von 45.
Du weißt, dass die CPU Anweisungen eine nach der anderen ausführt. Aber woher weiß die CPU, welche Anweisung als Nächstes ausgeführt werden soll? Wo werden die Anweisungen gespeichert? Und wie sieht eine Anweisung eigentlich aus?
Anweisungen sind Zahlen.
Dies ist eine grundlegende Wahrheit über Computer. Alles ist eine Zahl. Die Daten, mit denen du arbeitest (wie die Zahl 42), sind eine Zahl. Die Adresse, an der die Daten gespeichert sind (wie 1000), ist eine Zahl. Und auch die Anweisungen selbst (wie mov, add, cmp) sind Zahlen.
Wenn du Assemblercode wie mov rax, 5 schreibst, wandelt der Assembler diesen für Menschen lesbaren Text in eine Zahl um, die die CPU versteht. Diese Zahl wird Instruktionscode genannt.
Wo werden Anweisungen gespeichert?
Anweisungen werden wie Daten im Speicher gespeichert. Es gibt keinen speziellen Ort für Anweisungen. Der Speicher enthält beides:
- Daten (Zahlen, Zeichen, Arrays)
- Anweisungen (das Programm selbst)
Die CPU kennt den Unterschied nicht. Sie liest einfach, was sich an der vom Program Counter angegebenen Speicheradresse befindet. Du hast in Lektion 0.1 kurz etwas über den PC gelernt. Jetzt ist es an der Zeit, genau zu verstehen, wie er funktioniert.
Der Program Counter (auch Instruction Pointer genannt) ist ein spezielles Register innerhalb der CPU. Seine einzige Aufgabe besteht darin, die Speicheradresse der nächsten auszuführenden instruction zu speichern.
Der Fetch-Execute-Zyklus:
Die CPU wiederholt diese drei Schritte für immer:
| Schritt | Was passiert |
|---|---|
| 1. FETCH | Read die instruction an der address in PC |
| 2. EXECUTE | Perform diese instruction |
| 3. ADVANCE | Move PC zur next instruction |
Einfaches Beispiel:
Wenn PC = 1000 ist, führt die CPU Folgendes aus:
- Ruft die Anweisung an der Adresse 1000 ab
- Führt sie aus
- Verschiebt PC zur nächsten Adresse (1000 + Größe der Anweisung)
Dann wird es mit dem neuen PC-Wert wiederholt.
So sieht eine instruction aus:
Jede instruction hat zwei Teile:
| Teil | Was sie tut | Beispiel |
|---|---|---|
| Opcode | Was zu TUN ist | mov, add, cmp |
| Operanden | Worauf sie angewendet wird | rax, 5, [result] |
Einige Anweisungen haben einen Operanden (wie inc rax, um 1 zu addieren). Einige haben zwei (wie mov rax, 5). Einige haben drei (wie add rax, rbx, rcx in manchen Architekturen).
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Die Maschine
Was ist eine CPUSpeicherRegister vs. SpeicherWie Befehle funktionierenZwei-Dateien-MusterDie x86-64 ArchitekturÜbe selbstständig: Assembly-Playground