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:
| Cecha | Rejestry | Pamięć (RAM) |
|---|---|---|
| Lokalizacja | Wewnątrz procesora | Poza procesorem |
| Szybkość | Ekstremalnie szybka (1 cykl) | Wolniejsza (wiele cykli) |
| Liczba miejsc do przechowywania | Bardzo mało (16–32 w x86-64) | Miliony lub miliardy |
| Rozmiar każdego miejsca | 8 bajtów (64 bity) | 1 bajt |
| Jak uzyskać do nich dostęp | Po 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:
| Krok | Co się dzieje | Przykład |
|---|---|---|
| 1. LOAD | Skopiuj dane z pamięci do rejestru | mov rax, [count] |
| 2. WORK | Wykonaj działanie na rejestrze | add rax, 5 |
| 3. STORE | Skopiuj 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.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Maszyna
Czym jest CPUPamięćRejestry a pamięćJak działają instrukcjeWzorzec dwóch plikówArchitektura x86-642Systemy liczbowe
Dlaczego system binarny?Liczby binarneZamiana z systemu dziesiętnego na binarnyDlaczego system szesnastkowy?Zamiana z systemu szesnastkowego na dziesiętnyZamiana z systemu dziesiętnego na szesnastkowyASCII i system szesnastkowy5Wywołanie systemowe zakończenia
Czym jest syscall?Wywołanie systemowe zakończenia (60)Kody zakończeniaPodsumowanie: prawidłowe zakończeniePoćwicz samodzielnie: Edytor online Assembly