A Forth programozási nyelv

Nyelvi elemek

Nyelvi kifejezések

A FORTH aritmetika

A FORTH a legtöbb nyelvvel ellentétben a megszokottól eltérő postfix írásmódot használja. A négy alapművelet itt is: + , - , * , / .
Egy példa:
Számítsuk ki FORTH-ban a (2+3)*4 kifejezés értékét, ez FORTH-ban így néz ki: 2 3 + 4 *
A fordító először leteszi a veremre a 2 és a 3 értékeket, a + operátor kiveszi mindkettőt, összeadja, és az eredményt visszarakja a verembe. Ezek után berakjuk a 4-es értéket, majd a * művelet újból kiveszi a két veremben lévő értéket, összeszorozza, és az eredményt visszateszi. Ezek után már nincs más dolgunk csak felhasználni a verem tetején lévő számot.

Összehasonlító logikai műveletek

A jelző

A jelző(flag) arra jó, hogy valaminek az igaz-hamis voltát jelezze, a FORTH-ban egy flag HAMIS, ha értéke 0, IGAZ ha értéke nem 0.

Logikai műveletek

Az összehasonlító műveletek :

< ( n1 n2 ---- f ) -- f igaz ha n1<n2
> ( n1 n2 ---- f ) -- f igaz ha n1>n2
= ( n1 n2 ---- f ) -- f igaz ha n1=n2

Ha az összehasonlító műveletek eredménye igaz, akkor 1-et adnak vissza.

Logikai műveletek :

AND (n1 n2 ---- n) -- bitenkénti és
OR (n1 n2 ---- n)-- bitenkénti vagy
XOR (n1 n2 ---- n) -- bitenkénti kizáró vagy

Ezeket a bitenkénti műveleteket ha flagekre használjuk, akkor azok automatikusan flagre képződnek le, persze fontos hogy a flageket "szabványosan" használjuk, azaz a hamis=0, igaz=1 értékeket használjuk.

Gyorsműveletek

A gyorsműveleteket használva a kódot gyorsabbá és egyszerűbbé tehetjük.
A gyorsműveletek:

1+ (n ---- n1) -- n értékétt 1-el növeli
1- (n ---- n1) -- n értékét 1-el csökkenti
2* (n ----- n1) -- n értékét 2-vel szorozza
2/ (n ---- n1) -- n értékétt 2-vel osztja
0= (n ---- f) -- igaz ha n=0
0< (n ---- f) -- igaz ha n<0

Változók

Változók létrehozása

VARIABLE ( n ---- ) : Változó definiálása

Pl. 15 VARIABLE A
Ekkor létrejötttt egy új A nevű változónk. A FORTH változók úgy működnek, ha beírjuk a változó nevét, akkor a a változó memóriacíme a veremre kerül.

Pl1.:
2
A (A veremre teszi a a A címét)
! A címre most a "2" értéket tettük.

Pl2.:

A @ (elővesszük a változó tartalmát)
1+ (Növeljük 1-el)
A ! (A megnövelt értéket visszatesszük)

(A ! és @ szavak leírását lásd a memóriakezelés c. fejezetben)

Konstansok

A konstansok olyan változók, amelyeknek nem változók az értéke, a veremre nem a memóriacímüket, hanem az értéküket teszik.

Konstans létrehozása:

CONSTANT ( n ---- )

Pl.: 15 CONSTANT KONSTANS

Pl2: 15 CONSTANT KONSTANS
KONSTANS 1+
Eredmény : kiírja hogy "16".