width-Trick
Von: Volker Pohlers (vpohlers@arcor.de) [Profil]
Datum: 29.05.2008 19:30
Message-ID: <483ee809$0$27441$9b4e6d93@newsspool4.arcor-online.net>
Newsgroup: de.comp.lang.forth
Datum: 29.05.2008 19:30
Message-ID: <483ee809$0$27441$9b4e6d93@newsspool4.arcor-online.net>
Newsgroup: de.comp.lang.forth
Hallo liebe Forthler, im Zuge der Aufarbeitung von Software für meine alten 8-Bit-Rechner ist mir folgender Code zum Anlegen lokaler Variablen aufgefallen: 00 \ lokale Variablen VP-31okt90 01 02 DECIMAL 03 04 VARIABLE 'LOCAL 05 06 : LOCAL ( n -- ) 07 DUP 9 > ABORT" zu viele loka 08 le Variablen" 09 2* DUP 10 [ HIDDEN ] COMPILE BRANCH 11 [ FORTH ] HERE + 2+ , 12 HERE 'LOCAL ! 13 ALLOT ; 14 00 \ lokale Variablen VP-31okt90 01 02 3 WIDTH ! 03 04 : LOCn ( -- ) 05 HERE 4 + C@ ASCII 0 - 06 2* 'LOCAL @ + 07 [COMPILE] LITERAL ; 08 IMMEDIATE 09 10 31 WIDTH ! 11 Screen # 02 ----------------------- 00 \ Beispiel 2 VP-31okt90 01 02 03 : 5SWAP2 ( n1 .. n5 -- n5 .. n1) 04 [ 5 LOCAL ] 05 LOC0 ! LOC1 ! LOC2 ! 06 LOC3 ! LOC4 ! 07 LOC0 @ LOC1 @ LOC2 @ 08 LOC3 @ LOC4 @ ; 09 Durch Setzen der gültigen Wortlänge auf 3 werden so im zweiten Screen auf einen Schlag die Worte LOC0, LOC1, LOC2, ..., LOC9 definiert. Diesen Trick hatte ich vermutlich aus Baranov, Nosdrunov: jasyk fort i jevo realisazii, Maschinostrojenie, Leningrad, 1988, (in russischer Sprache). Und nun meine Frage: Funktioniert das auch noch mit modernen FORTH's oder ging das nur mit FIG-FORTH und F83? (Sorry, aber das ist mein Stand - ich hatte die letzten 15 Jahre nicht mit FORTH zu tun). mfg Volker[ Auf dieses Posting antworten ]
Antworten
- Bernd Paysan (30.05.2008 11:36)
- Anton Ertl (30.05.2008 14:43)
