Menu
Coddy logo textTech

Rejestry a pamięć

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

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

  • Rejestry: małe schowki wewnątrz procesora
  • Pamięć (RAM): ogromna siatka ponumerowanych miejsc poza procesorem

Ale dlaczego są dwa miejsca? Dlaczego CPU nie może po prostu pracować bezpośrednio z pamięcią?

Odpowiedzią jest szybkość. Rejestry są niezwykle szybkie, ponieważ znajdują się wewnątrz procesora. Pamięć jest wolniejsza, ponieważ znajduje się na zewnątrz. Procesor może uzyskać dostęp do rejestru w jednym cyklu, ale dostęp do pamięci trwa znacznie dłużej.

Porównanie obok siebie:

CechaRejestryPamięć (RAM)
LokalizacjaWewnątrz CPUPoza CPU
SzybkośćNiezwykle szybkie (1 cykl)Wolniejsze (wiele cykli)
Liczba miejsc do przechowywaniaBardzo niewiele (16-32 w x86-64)Miliony lub miliardy
Rozmiar każdego miejsca8 bajtów (64 bity)1 bajt
Jak uzyskać do nich dostępZa pomocą nazwy (rax, rbx, rcx...)Za pomocą adresu (1000, msg, buffer)
Ulotne?Tak (znikają po wyłączeniu zasilania)Tak (znikają po wyłączeniu zasilania)

Najważniejsza zasada dotycząca asemblera:

Procesor nie może pracować bezpośrednio na danych w pamięci. Najpierw trzeba załadować dane do rejestrów.

To nie jest opcjonalne. Tak zaprojektowano procesor. Każde dodawanie, każde porównanie i każdy transfer danych musi odbywać się przez rejestr.

Trzystopniowy schemat, którego będziesz używać bez przerwy:

KrokCo się dziejePrzykład
1. LOADKopiowanie danych z pamięci do rejestrumov rax, [count]
2. WORKWykonanie operacji na rejestrzeadd rax, 5
3. STORESkopiowanie wyniku 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 po prostu nie potrafi tego zrobić. Najpierw musisz załadować je do rejestrów.

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