User CPFAQMembers ListCalendarToday's PostsSearch





Prova Gratis 30gg l'hosting fooweb
Reply
 
LinkBack Thread Tools Display Modes
 
Old 29-05-08, 07:30 PM
Volker Pohlers
 
Posts: n/a
Default width-Trick

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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
 
Old 30-05-08, 11:36 AM
Bernd Paysan
 
Posts: n/a
Default Re: width-Trick

Volker Pohlers wrote:
> 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).


Das geht wohl nicht mit moderneren Forths. Dafür haben die bereits eine
brauchbare Local-Syntax (also nicht einfach nur Nummern).

: 5swap { a b c d e } e d c b a ;

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://www.jwdt.com/~paysan/
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Try the foonews Toolbar!!!
 
Old 30-05-08, 02:43 PM
Anton Ertl
 
Posts: n/a
Default Re: width-Trick

Volker Pohlers <vpohlers@arcor.de> writes:
>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.


Eigentlich wurde nur ein Wort LOCn definiert, das auf alle Woerter
matcht, die mit LOC anfangen und 4 Zeichen haben. Und dieses Wort
compiliert etwas anderes, je nachdem, was das vierte Zeichen ist.

>Und nun meine Frage: Funktioniert das auch noch mit modernen FORTH's


Nein, moderne Forths kennen normalerweise WIDTH nicht. Da werden die
Namen immer in voller Laenge abgespeichert.

- anton
--
M. Anton Ertl Some things have to be seen to be believed
anton@mips.complang.tuwien.ac.at Most things have to be believed to be seen
http://www.complang.tuwien.ac.at/anton/home.html
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



 RSS Feeds - Archive - Top




All times are GMT +1. The time now is 10:11 PM. Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 Forum style by ForumMonkeys.com.