Menu
CoddyTech

Rejestry a pamięć

Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 3 z 45.

Nauczyłeś(-aś) się już o dwóch miejscach, w których dane mogą być przechowywane w komputerze:

  • Rejestry: niewielkie schowki wewnątrz CPU
  • Pamięć (RAM): ogromna siatka ponumerowanych komórek poza CPU

Ale dlaczego są dwa miejsca? Dlaczego procesor nie przechowuje wszystkiego w pamięci?

Odpowiedź to szybkość. Rejestry są niezwykle szybkie, ponieważ znajdują się wewnątrz procesora. Pamięć jest wolniejsza, ponieważ znajduje się poza nim. Procesor może uzyskać dostęp do rejestru w jednym cyklu, ale dostęp do pamięci zajmuje znacznie więcej czasu.

Porównanie obok siebie:

CechaRejestryPamięć (RAM)
LokalizacjaWewnątrz procesoraPoza procesorem
SzybkośćEkstremalnie szybka (1 cykl)Wolniejsza (wiele cykli)
Liczba miejsc do przechowywaniaBardzo mało (16–32 w x86-64)Miliony lub miliardy
Rozmiar każdego miejsca8 bajtów (64 bity)1 bajt
Jak uzyskać do nich dostępPo nazwie (rax, rbx, rcx...)Po adresie (1000, msg, buffer)
Ulotna?Tak (zawartość znika po wyłączeniu zasilania)Tak (zawartość znika po wyłączeniu zasilania)

Najważniejsza zasada w asemblerze:

Instrukcja może używać co najwyżej jednego operandu pamięciowego. Aby połączyć dwie wartości, które znajdują się w pamięci, najpierw załaduj jedną z nich do rejestru.

Rejestry to także miejsce, w którym przechowujesz używane wartości, ponieważ każdy dostęp do pamięci jest powolny.

Trzyetapowy schemat, którego będziesz używać nieustannie:

KrokCo się dziejePrzykład
1. LOADSkopiuj dane z pamięci do rejestrumov rax, [count]
2. WORKWykonaj działanie na rejestrzeadd rax, 5
3. STORESkopiuj wynik z powrotem do pamięci (jeśli to konieczne)mov [result], rax

Co się stanie, jeśli zapomnisz o tej zasadzie?

Jeśli spróbujesz dodać dwie liczby, które znajdują się w pamięci, asembler zgłosi błąd. Procesor nie może tego zrobić. Najpierw musisz załadować jedną z nich do rejestru.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Assembly