( uid_6201 | 2020. 12. 09., sze – 08:28 )

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/