Maszyna stosowa
Z Wikipedii
Maszyna stosowa to maszyna (procesor bądź maszyna wirtualna), w której podstawowe operacje prowadzi się na stosie, nie zaś na rejestrach.
Liczenie pierwiastków równania kwadratowego na przykładowej maszynie stosowej (pomijając sprawdzenie czy w ogóle istnieją pierwiastki rzeczywiste):
Operacja | Stos (tylko część używana w algorytmie) | |||
---|---|---|---|---|
push memory(A) | A | |||
push memory(C) | C | A | ||
push 4 | 4 | C | A | |
mul | 4C | A | ||
mul | 4AC | |||
push memory(B) | B | 4AC | ||
dup | B | B | 4AC | |
mul | B2 | 4AC | ||
sub | Δ = B2 − 4AC | |||
sqrt | ![]() |
|||
dup | ![]() |
![]() |
||
push memory(B) | B | ![]() |
![]() |
|
neg | − B | ![]() |
![]() |
|
add | ![]() |
![]() |
||
xchg | ![]() |
![]() |
||
push memory(B) | B | ![]() |
![]() |
|
neg | − B | ![]() |
![]() |
|
sub | ![]() |
![]() |
||
push memory(A) | A | ![]() |
![]() |
|
push 2 | 2 | A | ![]() |
![]() |
mul | 2A | ![]() |
![]() |
|
xchg | ![]() |
2A | ![]() |
|
div | ![]() |
![]() |
||
pop memory(X1) | ![]() |
|||
push memory(A) | A | ![]() |
||
push 2 | 2 | A | ![]() |
|
mul | 2A | ![]() |
||
xchg | ![]() |
2A | ||
div | ![]() |
|||
pop memory(X2) |
Argument 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 rejestrowej.
Większość maszyn wirtualnych to maszyny stosowe.