Egyébként a FORTH és a verem bázisú processzor fura jószág, nem csak a Philae üstökösre menő egység procijának lett verem bázisú proci választva, de sok rakéta tűzvezető rendszere is FORTH-ban implementálódott.
Aki nem ismerné, az alapok:
- literál a programból/IO eljárásból --> verembe
- literál a programból/IO eljásárból --> verembe
- ...
- ADD ; veremből ki a két legfelsőt, összeadás, eredmény vissza a verembe
- SWAP ; verem két felső elemét felcseréli, hogy az utána következő osztás a/b helyett b/a-t számoljon.
- DUP ; verem legfelső elemét mégegyszer betolja a verembe
- OVER ; verem legfelső alatti elemét betolja (megismétli) a verem tetejére.
- ROT ; egyetlen felső 3 elemet érintő művelet ... legfelső 3 elemet megforgatja a veremben.
- DROP ; kiszedi és eldobja a verem legfelső elemét
$ echo "6 5 7 + SWAP / ." | gforth # . a kiíró eljárás, a verem legfelső elemét kiírja.
Természetesen implementálva van I/O eljárás, hogy a verem legfelső elemét ki is tudd rakni például hardver portra, illetve a hardverportról be is tudj olvasni a verem tetejére.
Továbbá ciklus, eljárás, feltétel, ... létezik. Eljárást tudsz FORTH-ban definiálni a : jellel, ezzel új utasítást teremtve, ami a stackból kiemeli az adatot és végül a stackbe rakja vissza az eredményt.
Itt látható egy alap stack bázisú (FORTH) processzor Verilog-ban: https://www.excamera.com/sphinx/fpga-j1.html
A teljesség kedvéért: verem bázisú a Forth, Postscript, Factor.
Valakinek elgurult a gyógyszer, Forth-ban írt webes környezetet: https://www.1-9-9-1.com/