This page (revision-21) was last changed on 03-Feb-2023 15:21 by Carsten Strotmann 

This page was created on 29-Jul-2010 13:57 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
21 03-Feb-2023 15:21 27 KB Carsten Strotmann to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 193 changed one line
(to be continued ...)
Da eine solche Prüfung auf Gleichheit in der Programmierpraxis oft vorkommt, stellt das volks4TH dafür das Wort case? zur Verfügung. case? vergleicht die obersten beiden Stackwerte miteinander. Bei Ungleichheit bleibt der Testwert (Selektor) erhalten, so daß die Worte DUP und = dadurch ersetzt werden.
{{{
: Auswertung.3 ( Wurfergebnis -- )
1 case? IF nehmen exit THEN
2 case? IF links schieben exit THEN
3 case? IF links schieben exit THEN
4 case? IF rechts schieben exit THEN
5 case? IF rechts schieben exit THEN
6 case? IF trinken exit THEN
drop invers ." Betrug!" normal ;
}}}
Bei dieser Auswertung wird aus dem QueHtext zu wenig deutlich, daß bei ZWEI und DREI dieselbe Handlung ausgeführt wird, wie auch VIER und FÜNF die gleichen Aktionen zur Folge haben.
=OR prüft deshalb einen Testwert n2 auf Gleichheit mit einer unter einem Flag f1 liegenden Zahl n2. Das Ergebnis dieses Tests wird mit dem bereits vorliegenden Flag OR-verknüpft. Dieses neue Flag f2 und der Testwert nl werden Übergeben:
=OR Definition in Forth
{{{
: =or ( n1 f1 n2 -- n1 f2 )
2 pick
= or ;
}}}
=OR Definition in 8086 Assembler
{{{
code 0or ( n1 f1 n2 -- n1 f2 )
A D xchg D pop
S W mov
W ) A cmp
0= ?[ -1 # D mov ]?
next
end-code
}}}