Jak działają instrukcje
Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 4 z 45.
Wiesz, że procesor wykonuje instrukcje jedna po drugiej. Ale skąd procesor wie, którą instrukcję wykonać jako następną? Gdzie przechowywane są instrukcje? I jak właściwie wygląda instrukcja?
Instrukcje są liczbami.
To podstawowa prawda o komputerach. Wszystko jest liczbą. Dane, z którymi pracujesz (takie jak liczba 42), są liczbą. Adres, pod którym znajdują się dane (taki jak 1000), jest liczbą. Same instrukcje (takie jak mov, add, cmp) również są liczbami.
Gdy piszesz kod asemblera, taki jak mov rax, 5, asembler przekształca ten czytelny dla człowieka tekst w liczbę zrozumiałą dla procesora. Ta liczba jest nazywana kodem instrukcji.
Gdzie są przechowywane instrukcje?
Instrukcje są przechowywane w pamięci, tak samo jak dane. Nie ma specjalnego miejsca na instrukcje. Pamięć przechowuje oba rodzaje:
- Dane (liczby, znaki, tablice)
- Instrukcje (sam program)
Procesor nie zna tej różnicy. Po prostu odczytuje to, co znajduje się pod adresem pamięci wskazywanym przez licznik programu. Krótko poznasz PC w lekcji 0.1. Teraz czas dokładnie zrozumieć, jak działa.
Licznik programu (nazywany również wskaźnikiem instrukcji) to specjalny rejestr wewnątrz procesora. Jego jedynym zadaniem jest przechowywanie adresu pamięci następnej instrukcji do wykonania.
Cykl pobierania i wykonywania:
Procesor powtarza te trzy kroki w nieskończoność:
| Krok | Co się dzieje |
|---|---|
| 1. FETCH | Odczytaj instrukcję spod adresu w PC |
| 2. EXECUTE | Wykonaj tę instrukcję |
| 3. ADVANCE | Przenieś PC do następnej instrukcji |
Prosty przykład:
Jeśli PC = 1000, procesor:
- Pobiera instrukcję spod adresu 1000
- Wykonuje ją
- Przesuwa PC na następny adres (1000 + rozmiar instrukcji)
Następnie powtarza się z nową wartością PC.
Jak wygląda instrukcja:
Każda instrukcja składa się z dwóch części:
| Część | Co robi | Przykład |
|---|---|---|
| Opcode | Co zrobić | mov, add, cmp |
| Operandy | Na czym to zrobić | rax, 5, [result] |
Niektóre instrukcje mają jeden operand (np. inc rax, aby dodać 1). Niektóre mają dwa (np. mov rax, 5). Niektóre mają trzy (np. add rax, rbx, rcx w niektórych architekturach).
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