Menu
CoddyTech

Register vs. Speicher

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

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

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

Aber warum gibt es zwei Speicherorte? Warum behält die CPU nicht alles im Speicher?

Die Antwort lautet: 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 Zyklus auf ein Register zugreifen, aber der Zugriff auf den Speicher dauert viel länger.

Direkter Vergleich:

MerkmalRegisterSpeicher (RAM)
OrtInnerhalb 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 greifst du darauf zu?Über den Namen (rax, rbx, rcx...)Über die Adresse (1000, msg, buffer)
Flüchtig?Ja (geht beim Ausschalten verloren)Ja (geht beim Ausschalten verloren)

Die wichtigste Regel in Assembly:

Eine Anweisung kann höchstens einen Speicheroperanden verwenden. Um zwei Werte zu kombinieren, die sich beide im Speicher befinden, lade zuerst einen davon in ein Register.

Register sind außerdem der Ort, an dem du die Werte aufbewahrst, mit denen du arbeitest, denn jeder Zugriff auf den Speicher ist langsam.

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 nötig)mov [result], rax

Was passiert, wenn du diese Regel vergisst?

Wenn du versuchst, zwei Zahlen zu addieren, die sich beide im Speicher befinden, gibt der Assembler einen Fehler aus. Die CPU kann das nicht. Du musst zuerst eine davon in ein 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