!!!Arithmetik

[{TableOfContents }]

!!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.

* [1+|one-plus]
* [1-|one-minus]
* [2+|two-plus]
* [2-|two-minus]
* [2*|two-times]
* [2/|two-divide]
* [3+|three-plus]
* [abs|absolute]
* [not]
* [negate]
* [even]
* [max|maximum]
* [min|minimum]
* [+|plus]
* [-|minus]
* [*|times]
* [/|divide]
* [mod]
* [/mod|divide-mod]
* [*/|times-divide]
* [*/mod|times-divide-mod]
* [u/mod|u-divide-mod]
* [umax|u-maximum]
* [umin|u-minimum]