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 innerhalb eines Computers gespeichert werden können:

  • Register — winzige Speicherplätze 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 Zyklus auf ein Register zugreifen, aber der Zugriff auf den Speicher dauert viel länger.

Vergleich nebeneinander:

MerkmalRegisterSpeicher (RAM)
PositionInnerhalb der CPUAußerhalb der CPU
GeschwindigkeitExtrem schnell (1 Zyklus)Langsamer (viele Zyklen)
Anzahl der SpeicherplätzeSehr wenige (16–32 auf x86-64)Millionen oder Milliarden
Größe jedes Speicherplatzes8 Bytes (64 Bits)1 Byte
Wie du darauf zugreifstÜber den Namen (rax, rbx, rcx...)Über die 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 konzipiert. Jede Addition, jeder Vergleich, jede Datenbewegung muss über ein register erfolgen.

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

SchrittWas passiertBeispiel
1. LOADDaten aus dem memory in ein register kopierenmov rax, [count]
2. WORKEtwas mit dem register tunadd rax, 5
3. STOREDas result zurück in den memory 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, gibt der Assembler einen Fehler aus. 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