Arithmetik#

Stacknotation#

Im folgenden werden hauptsählich Worte in ihrer Einzelfunktion beschrieben. In dieser Form der Beschreibung, die Sie bereits kennengelernt haben, wird die Wirkung eines Wortes auf den Stack in Klammern angegeben und zwar in folgender Form:

 ( vorher -- nachher ) 

vorher - Werte auf dem Stack vor Ausführung des Wortes nachher - Verte auf dem Stack nach Ausführung des Wortes

In dieser Notation wird das oberste Element des Stacks (tos) immer ganz rechts geschrieben. Sofern nicht anders angegeben, beziehen sich alle Stacknotationen auf die spätere Ausführung des Wortes. Bei immediate Worten wird auch die Auswirkung des Wortes auf den Stack während der Kompilierung angegeben. Worte werden ferner durch folgende Symbole gekennzeichnet:

c Dieses Wort kana nur während der Kompilation einer :-Definition benutzt werden.
I Dieses Wort ist ein immediate Wort, das auch im kompilierenden Zustand ausgeführt wird.
83 Dieses Wort wird im Forth83-Standard definiert und muß auf allen Standardsystemen äquivalent funktionieren.
U Kennzeichnet eine Uservariable.

Weicht die Aussprache eines Wortes von der natürlichen englischen Aussprache ab, so wird sie in Anführungszeichen angegeben. Gelegentlich folgt auch eine deutsche Übersetzung. Die Namen der Stackparameter folgen, sofern nicht suggestive Bezeichnungen ge­wählt wurden, dem nachstehendem Schema. Die Bezeichnungen konnen mit einer nachfolgenden Ziffer versehen sein.

Stacknotation Zahlentyp Wertebereich in Dezimal minimale Feldbreite
flag logischer Wert 0=flash, sonst=true 16bit
true (tf) logischer Wert -1 (als Ergebnis) 16bit
false (ff) logischer Wert 0 16bit
b Bit 0..1 1bit
char Zeichen 0..127 (0..255) 7(8bit)
8b 8 beliebige Bits nicht anwendbar 8bit
16b 16 beliebige Bits nicht anwendbar 16bit
n Zahl, bewertete Bits -32768 .. 32767 16bit
+n positive Zahl 0 .. 32767 16bit
u vorzeichenlosen Zahl 0 .. 65535 16bit
w Zahl, n oder u -32768..65535 16bit
addr Adresse, wie u 0..65535 16bit
32b 32 beliebige Bits nicht anwendbar 32bit
d doppelt genaue Zahl -2,147,483,648..2,147,483,647 32bit
+d positive doppelt genaue Zahl 0..2,147,483,647 32bit
ud vorzeichenlose, doppelt genaue Zahl 0..4,294,967,295 32bit
sys systemabhängige Werte nicht anwendbar nicht anwendbar

VolksForth Arithmetic#

-1 ( -- -1 )
0 ( -- 0 )
1 ( -- 1 )
2 ( -- 2 )
3 ( -- 3 )
4 ( -- 4 )

Oft benutzte Zahlenwerte wurden zu Konstanten gemacht. Definiert in der Form :

 n Constant n 

Dadurch wird Syeicherplatz eingespart und die Ausführungszeit ver­kürzt.