Rejestry

Rejestry

Rejestry: ręce procesora

Najpierw: czym jest bit? Bit to pojedyncze 0 lub 1, najmniejsza jednostka informacji, jaką komputer może przechować. Złóż 32 takie bity razem i masz liczbę 32-bitową, która może liczyć od 0 do około 4 miliardów. Każdy rejestr i każde miejsce w pamięci w RISC-V przechowuje jedną liczbę 32-bitową.

Rejestr to niewielkie miejsce przechowywania wewnątrz procesora, które przechowuje jedną liczbę 32-bitową. RISC-V udostępnia 32 rejestry. Ponieważ znajdują się w rdzeniu procesora, użycie rejestrów jest znacznie szybsze niż pamięci głównej, o rzędy wielkości. Kilka z nich pokryje większość tego, co napiszesz: t0 do t2 (wartości tymczasowe), a0 do a2 (argumenty i wyniki), zero (zawsze 0), sp (wskaźnik stosu) oraz ra (adres powrotu).

ℹ
Karta Simulator pokazuje każdy rejestr w miarę zmiany jego wartości podczas działania programu. Obserwowanie tego widoku to najszybszy sposób, aby wyczuć, jak zachowują się rejestry.
Twoja pierwsza aplikacja: wypisz 42
# Wypisz liczbę 42, a następnie zakończ.
# a7 wybiera usługę, a a0 przenosi wartość.
li a7, 1 # usługa 1 = drukuj liczbę całkowitą
li a0, 42 # wartość do wydrukowania
ecall # zrób to
li a7, 10 # usługa 10 = wyjście
ecall

oznacza load immediate (załaduj natychmiast) i umieszcza stałą w rejestrze. wybiera usługę 1, która wypisuje liczbę całkowitą. umieszcza liczbę do wypisania w a0. przekazuje sterowanie do systemu, który wypisuje wartość w a0. Następnie wybiera usługę zakończenia, a kończy program. Naciśnij Run, potem zmień 42 i uruchom program ponownie.

Wykonanie programu
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
output—
pc0x400000

Ustawienie a7 na 1 powoduje, że następne ecall wypisze liczbę.

Poniższy rysunek śledzi pięć powyższych linii podczas ich wykonywania przez symulator. Każda linia niesie adres, który zajmuje po załadowaniu programu, a adresy są oddalone od siebie o cztery bajty, ponieważ każda instrukcja RISC-V ma cztery bajty szerokości. Pole oznaczone pc, skrót od program counter (licznik programu), przechowuje adres aktualnie podświetlonej linii. Ta liczba to wszystko, co procesor wie o swojej pozycji w programie: pobiera instrukcję spod adresu w liczniku programu, wykonuje ją, a następnie dodaje cztery do licznika programu, aby dotrzeć do następnej instrukcji. Rejestr otrzymuje swoją wartość, gdy wykona się w jego linii, a wynik pojawia się dopiero, gdy uruchomi się pierwszy .