Maszyna stosowa

Z testwiki
Wersja z dnia 23:40, 19 mar 2024 autorstwa imported>NiktWażny (drobne techniczne)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Szablon:Dopracować 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 Δ=B24AC
sqrt Δ
dup Δ Δ
push memory(B) B Δ Δ
neg B Δ Δ
add B+Δ Δ
xchg Δ B+Δ
push memory(B) B Δ B+Δ
neg B Δ B+Δ
sub BΔ B+Δ
push memory(A) A BΔ B+Δ
push 2 2 A BΔ B+Δ
mul 2A BΔ B+Δ
xchg BΔ 2A B+Δ
div BΔ2A B+Δ
pop memory(X1) B+Δ
push memory(A) A B+Δ
push 2 2 A B+Δ
mul 2A B+Δ
xchg B+Δ 2A
div B+Δ2A
pop memory(X2)

Argument znajdują się w komórkach pamięci A, B i C. Wynik 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. Maszyną stosową był transputer oraz polski minikomputer Mera 400. Także rejestry koprocesorów arytmetycznych z serii x87 są zorganizowane w stos.