Maszyna rejestrowa
Z Wikipedii
Maszyna rejestrowa to maszyna (procesor bądź maszyna wirtualna), w której podstawowe operacje prowadzi się na niewielkiej grupie rejestrów, nie zaś na stosie.
Maszyny rejestrowe dysponują też stosem – dostępnym jawnie (instrukcjami dodawania do stosu push i zdejmowania ze stosu pop) bądź emulowanym (program modyfikuje rejestr bądź zmienną będącą wskaźnikiem do stosu), ale jest on używany do przechowywania i przekazywania danych, nie do obliczeń.
Liczenie pierwiastków równania kwadratowego na przykładowej maszynie rejestrowej (pomijając sprawdzenie czy w ogóle istnieją pierwiastki rzeczywiste):
Operacja | Stan maszyny | |||
---|---|---|---|---|
reg_a | reg_b | reg_c | reg_d | |
reg_a = memory(A) | A | ? | ? | ? |
reg_b = memory(B) | A | B | ? | ? |
reg_c = memory(C) | A | B | C | ? |
reg_c = reg_c * reg_a | A | B | AC | ? |
reg_d = reg_b * reg_b | A | B | AC | B2 |
reg_c = 4 * reg_c | A | B | 4AC | B2 |
reg_d = reg_d - reg_c | A | B | 4AC | Δ = B2 − 4AC |
reg_d = sqrt(reg_d) | A | B | 4AC | |
reg_a = 2*reg_a | 2A | B | 4AC | |
reg_b = -reg_b | 2A | − B | 4AC | |
reg_c = reg_b - reg_d | 2A | − B | ||
reg_d = reg_d + reg_b | 2A | − B | ||
reg_c = reg_c / reg_a | 2A | − B | ||
reg_d = reg_d / reg_a | 2A | − B | ||
memory(X1) = reg_c | 2A | − B | ||
memory(X2) = reg_d | 2A | − B |
Argumenty znajdują się w komórkach pamięci A, B i C. Wyniki znajduje się w komórkach pamięci X1 i X2.
Porównaj z tym samym algorytmem na maszynie stosowej.
Większość procesorów to maszyny rejestrowe. Do wirtualnych maszyn rejestrowych należy Parrot.