FORTH - és még velünk van

Néhány éve foglalkoztam a múlt egyik remekével, a FORTH-tal.
Aki nem ismerné, verem alapú programozási technika. Amolyan dobd el, amit a programozásról tanultál. :)

- o -

Oké, megismertem ennél picit jobban, néhány egyszerűbb programocskát írtam gyakorlásképpen, aztán továbbléptem.
Minap kezembe került egy FPGA-s hardver projekt. Csomó logika, némi direkt hálózatos aritmetika és egy benne verilogban implementált proci, hogy részben a saját, kívülről feltöltött cuccod is futhasson a célhardveren.

Mivel a verem bázisú proci Verilogban megírva egyszerű, így egy ilyen proci lett implementálva. És itt köszönt vissza a FORTH.
A bele való szoftver lefordítását mezei x86 asm fordítóval hidalta át az alkotó az alábbi szerint:

Először is makrókat definiált.
op_dup          equ 08100h
op_swap         equ 08200h
op_swap16       equ 08300h
op_over         equ 08400h
op_drop         equ 08500h
op_rot          equ 08600h
...

Innentől az assembly kód, amit szinte bármelyik assembly fordítóval le tudosz fordítani binárisra:
   dw 210
   dw op_add
   dw op_rot
   dw ...

Elgondolkoztam. Tényleg a legegyszerűbb procit implementálta az alkotó a hardveréhez, ami a kívánt feladatot ellátta.
Ezek szerint egyáltalán nem kell még temetni a FORTH-szerű programozást. Van olyan feladat, ahol jól jöhet ennek ismerete.

Update#1: a Rosetta projektben az üstökösre leszálló egységnél is ilyen verem alapú logikával működő procit használtak.
Egy magyar nyelvű cikk (utolsó oldal) erről: http://fizikaiszemle.hu/archivum/fsz1610/FizSzem2016-10_01SzalaiSandor…

Update#2: egyszerű implementációk
  FPGA: http://www.forth.org/eP16.zip
  STM8: https://github.com/TG9541/stm8ef
  Egy másik FPGA + ASM projekt: http://www.aholme.co.uk/GPS/SRC/2013/Verilog/ és http://www.aholme.co.uk/GPS/SRC/2013/ASM/
  AVR: http://amforth.sourceforge.net/TG/Cookbook.html

Hozzászólások