Język maszyny stosowej
- PUSH x --- wrzuć na wierzchołek stosu wartość x,
- POP --- usuń ze stosu wartość znajdującą się na czubku stosu,
- POP x --- usuń x-tą wartość na stosie (licząc od wierzchołka), x>0,
- DUP --- powielenie wartosci z wierzcholka stosu (x:=POP;PUSH(x);PUSH(x))
- DUP x --- wczytaj x-tą wartość na stosie (licząc od wierzchołka) i wrzuć
ją na stosie (stary element dalej zostaje na stosie), x>0,
- STORE x --- zdejmij ze stosu wartość i zapisz ją na x-tej pozycji na
stosie (licząc od wierzchołka), x>0,
- VDUP --- analogicznie jak DUP x, lecz najpierw zdejmowana jest ze stosu
wartość x, a następnie wykonywane jest polecenie DUP x, (x:=POP();DUP(x))
- VSTORE --- analogicznie jak STORE x, zdejmij ze stosu x, a następnie
wykonaj STORE x, (x:=POP();STORE(x))
- ADD --- zsumuj dwie wartość znajdujące się na wierzchołku stosu i wrzuć
wynik na stos (x:=POP();y:=POP();PUSH(x+y))
- SUB --- odejmij dwie wartość znajdujące się na wierzchołku stosu i wrzuć
wynik na stos (x:=POP();y:=POP();PUSH(y-x))
- ADD x --- dodaj x do wartości znajdującej się na wierzchołku stosu i wrzuć
wynik na stos (y:=POP();PUSH(y+x))
- GOTO e --- skok do etykiety e w programie
- IF e --- zdejmij ze stosu wartość, jeśli jest większa od zera to wykonaj
skok do etykiety e (x:=POP(); if (x>0) GOTO e)
- HALT --- zatrzymaj wykonanie programu
- PRINT --- zdejmij ze stosu wartość i ją wypisz
Przykład
program obliczający wartość bezwzględna z liczby na stosie: DUP 1
IF @dodatnia
@ujemna
PUSH 0
DUP 2
SUB
STORE 1
@dodatnia
PRINT
# komentarz