Page 20 - Enterpress Magazin - 2020. 3-6.
P. 20
20. oldal 2020. május – december
IS-FORTH - 3. rész
Intelligent Software - 1985
rendszerbővítő, FORTH programozási nyelv
1.6. Gyorsműveletek OVER ( a b - - - - a b a ) a második elemről készít egy
másolatot a verem tetején;
A legtöbb számítógépnek gyorsan működő gépi utasítása 2OVER ( a b c d - - - - a b c d a b ) a harmadik,
van arra, hogy valamit 1-gyel növeljen vagy csökkentsen, negyedik (vagy a második dupla pontosságú) elemről
2-vel szorozzon vagy osszon, megvizsgálja az előjelét. készít másolatot a verem tetején;
Ehhez képest az a sorozat, hogy 1 + (tegyél a veremre ROT ( a b c - - - - b c a ) a harmadik elemet
1-et, hívd a + szót) lassú és nehézkes. Az ún. „gyorsmű- kiszedi alulról, és feldobja a tetőre;
veletek” levágják a felesleges kanyarokat, és körülményes- 2ROT (a b c d e f - - - - c d e f a b) az ötödik,
kedés nélkül elindítják a megfelelő gépi utasításokat. A hatodik (vagy a 3. dupla pontosságú) elemet kiszedi
gyorsműveletek: alulról, és feldobja a verem tetejére;
-ROT ( a b c - - - - c a b) a ROT-al ellenkező irányba
1+ ( n - - - - n1 ) eggyel növeli n értékét; forgatja a verem legfelső három elemét.
1- ( n - - - - n1 ) eggyel csökkenti n értékét; -2ROT a két első elemet berakja az ötödik,
2+ ( n - - - - n1 ) kettővel növeli n értékét; hatodik helyre
2- ( n - - - - n1 ) kettővel csökkenti n értékét; DROP ( a - - - - ) eltávolítja a legfelső elemet;
2* ( n - - - - n1 ) megduplázza n értékét; 2DROP ( a b - - - - ) eltávolítja a két (vagy egy dupla
2/ ( n - - - - n1 ) megfelezi n értékét; pontosságú) legfelső elemet.
0= ( n - - - - f ) f akkor igaz, ha n = 0; NOT ( - - - - 0 ) logikai hamis, azaz 0 értéket tesz
D0= (nn - - - - f) A 0= dupla pontosságú alakja; a verembe
0< ( n - - - - f ) f akkor igaz, ha n < 0;
0> ( n - - - - f ) f akkor igaz, ha n > 0; Írjunk például egy olyan szót, amelynek hatása a veremre:
( X Y - - - - Z ), ahol Z = X * Y - (X + Y)
Láthatóan a gyorsműveleteket végző szavak hasonlóan
néznek ki, mint az ugyanúgy működő lépésenkénti paran- Nem kezdhetjük a dolgot aritmetikai művelettel, hiszen
csok, csak egy szóba írjuk az operandust a műveleti jellel; akkor elveszítenénk az x-et meg az y-t a veremről. Va-
az 1+ szó ugyanazt a műveletet végzi, mint az 1 + sorozat, lamilyen módon konzerválnunk kell őket. Jó fogás erre
csak gyorsabban. az OVER kétszeri alkalmazása. Az egyes lépések mellett
feltüntettük, hogy a lépés után mi lesz a veremben; ez
1.7. A verem átrendezése a felírási mód igen hasznos, amíg nem válunk a verem
rutinos bűvészévé. (Senkit ne zavarjon, hogy a definíciót
A FORTH szavak elvárják, hogy a vermen a megfelelő több sorba írtuk!)
sorrendben kapják a működésükhöz szükséges paramé-
tereket. Ez nem mindig egyszerű. Időnként a paraméterek : XY
a veremben rossz sorrendben keletkeznek, lehet köztük OVER
felesleges, de az is előfordulhat, hogy valamelyikre még OVER
egyszer szükség lenne. Az ilyen gondok megoldására *
szolgálnak a következő szavak: ROT
ROT
SWAP ( a b - - - - b a ) megcseréli a két felső elemet; +
2SWAP ( a b c d - - - - c d a b ) párban megcseréli a - ( X Y ) (ez van a legelején a veremben)
négy (vagy két dupla pontosságú) legfelső elemet ( X Y X )
DUP ( a - - - - a a ) megduplázza a legfelső elemet; ( X Y X Y )
2DUP ( a b - - - - a b a b ) megduplázza a két (vagy ( X Y szorzat )
egy dupla pontosságú) legfelső elemet; ( X szorzat Y )
?DUP ( a - - - - a a ) megduplázza a legfelső elemet, ( szorzat X Y )
ha az nem nulla. ( szorzat összeg )
( Z )

