Menu
CoddyTech

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ę uruchomić jako następną? Gdzie przechowywane są instrukcje? I jak właściwie wygląda instrukcja?

Instrukcje są liczbami.

To fundamentalna 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ą. A same instrukcje (takie jak mov, add, cmp) również są liczbami.

Gdy piszesz kod asemblera, na przykład mov rax, 5, asembler przekształca ten tekst czytelny dla człowieka w liczbę zrozumiałą dla procesora. Ta liczba nazywa się kodem instrukcji.

Gdzie są przechowywane instrukcje?

Instrukcje są przechowywane w pamięci, tak samo jak dane. Nie ma osobnej pamięci na instrukcje. Ta sama pamięć przechowuje zarówno:

  • Dane (liczby, znaki, tablice)
  • Instrukcje (sam program)

Same bajty nie wskazują, czy są instrukcją, czy danymi. Procesor traktuje to, co znajduje się pod adresem pamięci wskazywanym przez licznik programu, jako następną instrukcję. We współczesnym systemie operacyjnym system oznacza pamięć zawierającą instrukcje programu jako wykonywalną, a procesor odmawia wykonywania bajtów z pamięci, która nie jest oznaczona w ten sposób, na przykład danych programu. Krótko poznano licznik programu 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 bez końca:

KrokCo się dzieje
1. FETCHOdczytaj instrukcję spod adresu w PC
2. EXECUTEWykonaj tę instrukcję
3. ADVANCEPrzesuń 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ęśćDo czego służyPrzykład
OpcodeCo zrobićmov, add, cmp
OperandyNa czym to zrobićrax, 5, [result]

Niektóre instrukcje mają jeden operand (jak inc rax, aby dodać 1). Niektóre mają dwa (jak mov rax, 5). Niektóre mają trzy (jak add rax, rbx, rcx w niektórych architekturach).

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