Menu
Coddy logo textTech

Register vs. Speicher

Teil des Abschnitts Grundlagen der Assembly-Journey von Coddy. Lektion 3 von 45.

Du hast nun zwei Orte kennengelernt, an denen Daten in einem Computer gespeichert werden können:

  • Register: winzige Speicherboxen innerhalb der CPU
  • Speicher (RAM): ein riesiges Raster nummerierter Speicherplätze außerhalb der CPU

Aber warum gibt es zwei Orte? Warum kann die CPU nicht einfach direkt mit dem Speicher arbeiten?

Die Antwort ist Geschwindigkeit. Register sind extrem schnell, weil sie sich innerhalb der CPU befinden. Der Speicher ist langsamer, weil er sich außerhalb befindet. Die CPU kann in einem einzigen Taktzyklus auf ein Register zugreifen, aber der Zugriff auf den Speicher dauert deutlich länger.

Vergleich nebeneinander:

MerkmalRegisterSpeicher (RAM)
位置Innerhalb der CPUAußerhalb der CPU
GeschwindigkeitExtrem schnell (1 Zyklus)Langsamer (viele Zyklen)
Anzahl der SpeicherplätzeSehr wenige (16–32 bei x86-64)Millionen oder Milliarden
Größe jedes Speicherplatzes8 Byte (64 Bit)1 Byte
Wie greift man darauf zu?Nach Namen (rax, rbx, rcx...)Nach Adresse (1000, msg, buffer)
Flüchtig?Ja (verschwindet beim Ausschalten)Ja (verschwindet beim Ausschalten)

Die wichtigste Regel in Assembly:

Die CPU kann nicht direkt mit Daten im Speicher arbeiten. Daten müssen zuerst in Register geladen werden.

Das ist nicht optional. So ist die CPU aufgebaut. Jede Addition, jeder Vergleich und jede Datenbewegung muss über ein Register erfolgen.

Das Drei-Schritte-Muster, das du ständig verwenden wirst:

SchrittWas passiertBeispiel
1. LOADDaten aus dem Speicher in ein Register kopierenmov rax, [count]
2. WORKEtwas mit dem Register tunadd rax, 5
3. STOREDas Ergebnis zurück in den Speicher kopieren (falls erforderlich)mov [result], rax

Was passiert, wenn du diese Regel vergisst?

Wenn du versuchst, zwei Zahlen zu addieren, die sich beide im Speicher befinden, wird der Assembler einen Fehler ausgeben. Die CPU kann das einfach nicht. Du musst sie zuerst in Register laden.

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Assembly-Playground