Menu
Coddy logo textTech

Register vs. Speicher

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

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

  • Register — winzige Speicherboxen innerhalb der CPU
  • Arbeitsspeicher (RAM) — ein riesiges Gitter aus nummerierten Steckplätzen 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, da sie sich innerhalb der CPU befinden. Der Speicher ist langsamer, da 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)
SpeicherortInnerhalb 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 Platzes8 Byte (64 Bit)1 Byte
ZugriffsartÜ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 Assembler:

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

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

Das Drei-Schritte-Muster, das Sie ständig verwenden werden:

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

Was passiert, wenn Sie diese Regel vergessen?

Wenn Sie versuchen, zwei Zahlen zu addieren, die sich beide im Speicher befinden, wird der Assembler eine Fehlermeldung ausgeben. Die CPU kann das einfach nicht. Sie müssen 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