Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups de.comp.lang.* Forum > Newsgroup de.comp.lang.forth
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup de.comp.lang.forth Forth, Anwendungen in Forth, Forth-Hardware.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10-29-2009, 07:14 PM
Erich Wälde
 
Beiträge: n/a
Standard Verwendung von Wortlisten

Liebe Leute,

Forth bietet Wortlisten (Vokabulare). Mir fällt aber nur
ein einziger Anwendungsfall ein: eine reduzierte Wortliste
für den Anwender ohne super-cow-powers.

Wo/wie setzt ihr Wortlisten ein?
Was erreicht ihr damit?
Wie entscheidet ihr, wann Wortlisten gut sind,
und wie entscheidet ihr, was in welche Liste kommt?


Bin gespannt auf Eure Antworten,

Erich
Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 10-30-2009, 06:32 AM
Rafael Deliano
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

> Forth bietet Wortlisten (Vokabulare). Mir fällt aber nur
> ein einziger Anwendungsfall ein

Nicht jedes kleine FORTH muß das haben. Genau wie
state-smart Verhalten von Compilern ist es für den
Benutzer wenig transparent und oft frustierend.

> Wie entscheidet ihr, wann Wortlisten gut sind,

Es gab mal eine Implementierung des PALASM für PALs
d.h. ein simpler Compiler für Logikgleichungen.
Da wurde es wegen der Verwendung von
Namen wie + für XOR statt Addition verwendet.
Die Syntax die für XOR "+" als Symbol hat war von MMI
mehr oder weniger vorgegeben.
Innerhalb dieser Anwendung wurde Addition nicht
benötigt.

In nanoFORTH GP32 wird für den 68HC08 Assembler
die Assembler-Wortliste bei Bedarf zugeschaltet.
Da ist der Grund bessere Compiliergeschwindigkeit.
Gabs irgenwann mal Artikel in der VD dazu.

MfG JRD
Mit Zitat antworten
  #3  
Alt 10-30-2009, 09:04 AM
Bernd Paysan
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

Erich Wälde wrote:

> Liebe Leute,
>
> Forth bietet Wortlisten (Vokabulare). Mir fällt aber nur
> ein einziger Anwendungsfall ein: eine reduzierte Wortliste
> für den Anwender ohne super-cow-powers.


In größeren Forth-Systemen sind sie definitiv sinnvoller als in kleinen.

> Wo/wie setzt ihr Wortlisten ein?


Na, der Assembler z.B. ist bei mir immer in einem eigenen Vokabular.
bigFORTH hat auch ein Modul-Feature, das Modul ist ein Vokabular, und
exportiert nur die Wörter, die der Benutzer des Moduls auch sehen muss. Und
bei OOP verwende ich Vokabulare, um die Methoden der einzelnen Klassen
voneinander zu trennen. Ebenso die C-Strukturen, da in C jede Struktur einen
eigenen Namensraum hat, und dann oft die gleichen Variablennamen
wiederverwendet werden (x und y z.B. kommen bei Xlib.h mehrmals an
verschiedenen Positionen vor).

Mein HTTP-Server verwendet ein eigenes Vokabular für die HTTP-Variablen. Und
der Cross-Compiler verwendet gleich mehrere Vokabulare.

> Was erreicht ihr damit?


Namensräume trennen.

> Wie entscheidet ihr, wann Wortlisten gut sind,
> und wie entscheidet ihr, was in welche Liste kommt?


Wordlisten sind gut, wenn dasselbe Wort in unterschiedlichen Kontexten
unterschiedliche Bedeutungen hat - z.B. AND in Forth führt das AND direkt
aus, AND im Assembler erzeugt einen entsprechenden AND-Befehl im Code.
Ebenso beim Cross-Compiler: Da gibt es ein AND vom Host, das direkt
ausgeführt wird, ein AND im Target, das allenfalls compiliert werden kann
und so weiter.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://www.jwdt.com/~paysan/
Mit Zitat antworten
  #4  
Alt 10-30-2009, 04:33 PM
Anton Ertl
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

Bernd Paysan <bernd.paysan*gmx.de> writes:
>Wordlisten sind gut, wenn dasselbe Wort in unterschiedlichen Kontexten
>unterschiedliche Bedeutungen hat - z.B. AND in Forth führt das AND direkt
>aus, AND im Assembler erzeugt einen entsprechenden AND-Befehl im Code.


Das ist aber ein gutes Beispiel, warum die Loesung mit wordlists nicht
so toll ist: Oft will man im Assembler-Code auch ein Forth-AND
ausfuehren, z.B. um eine Bitmaske zu berechnen, dann muss man
muehselig zwischen den wordlists hin- und her-schalten, und das ganze
wird schwierig zu lesen. Was ich stattdessen lieber mache, ist, den
Assembler-Befehl "AND," zu nennen. Das loest nicht nur das
Namenskollisionsproblem, sondern hilft auch beim Lesen von mehreren
Assembler-Befehlen in einer Zeile, zumindest wenn man einen
Postfix-Assembler verwendet. Die Assembler-Befehle sind trotzdem in
einer eigenen Wordlist.

- 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
Mit Zitat antworten
  #5  
Alt 10-30-2009, 04:35 PM
Michael Kalus
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

On 30 Okt., 10:04, Bernd Paysan <bernd.pay...*gmx.de> wrote:
...
> Wordlisten sind gut, wenn dasselbe Wort in unterschiedlichen Kontexten
> unterschiedliche Bedeutungen hat - z.B. AND in Forth führt das AND direkt
> aus, AND im Assembler erzeugt einen entsprechenden AND-Befehl im Code.
> Ebenso beim Cross-Compiler: Da gibt es ein AND vom Host, das direkt
> ausgeführt wird, ein AND im Target, das allenfalls compiliert werden kann
> und so weiter.


Hm. Könnte ich damit so etwas machen?:

vocabulary amforth-asm ...
: cr cr ." .dw XT_CR " ;
...
: drop cr ." .dw XT_DROP " ;
: over cr ." .dw XT_OVER " ;
: swap cr ." .dw XT_SWAP " ;

Also Worte die zB amforth-assembler Instruktionen ergeben sollen in
ein eigenes Vocabular hinein compilieren. Aber so das bei dieser
Compilation die neuen Definitionen NICHT gefunden werden. Im Beispiel
soll ja das CR im neuen DROP als Forthwort ausgeführt werden, und eben
nicht den String " .dw XT_CR " ausgeben. Erst wenn das Vocabular
amforth-asm an gemacht wird, sollen die neuen Worte wirksam werden.

Bisher mache ich das mit einer Hilfskonstruktion.
: _cr cr ;
...
_: drop _cr _." .dw XT_DROP " _;
...

Michael
Mit Zitat antworten
  #6  
Alt 10-30-2009, 05:24 PM
Bernd Paysan
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

Michael Kalus wrote:
> Hm. Könnte ich damit so etwas machen?:
>
> vocabulary amforth-asm ...
> : cr cr ." .dw XT_CR " ;
> ..
> : drop cr ." .dw XT_DROP " ;
> : over cr ." .dw XT_OVER " ;
> : swap cr ." .dw XT_SWAP " ;
>
> Also Worte die zB amforth-assembler Instruktionen ergeben sollen in
> ein eigenes Vocabular hinein compilieren. Aber so das bei dieser
> Compilation die neuen Definitionen NICHT gefunden werden. Im Beispiel
> soll ja das CR im neuen DROP als Forthwort ausgeführt werden, und eben
> nicht den String " .dw XT_CR " ausgeben. Erst wenn das Vocabular
> amforth-asm an gemacht wird, sollen die neuen Worte wirksam werden.


Ja klar, kann man. Da sagt man

vocabulary amforth-asm
amforth-asm definitions forth
: cr cr ." .dw XT_CR " ;
: drop cr ." .dw XT_DROP " ;

Ausprobiert:

amforth-asm drop
.dw XT_DROP ok

Jupp, alles richtig.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://www.jwdt.com/~paysan/
Mit Zitat antworten
  #7  
Alt 10-30-2009, 08:30 PM
Michael Kalus
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

On 30 Okt., 18:24, Bernd Paysan <bernd.pay...*gmx.de> wrote:

Klasse, danke. Michael
Mit Zitat antworten
  #8  
Alt 10-30-2009, 09:49 PM
Michael Kalus
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

On 29 Okt., 20:14, Erich Wälde <ew.ng116...*online.de> wrote:
> Liebe Leute,
>
> Forth bietet Wortlisten (Vokabulare). Mir fällt aber nur
> ein einziger Anwendungsfall ein: eine reduzierte Wortliste
> für den Anwender ohne super-cow-powers.
>
> Wo/wie setzt ihr Wortlisten ein?
> Was erreicht ihr damit?
> Wie entscheidet ihr, wann Wortlisten gut sind,
> und wie entscheidet ihr, was in welche Liste kommt?
>
> Bin gespannt auf Eure Antworten,
>
> Erich


Wie wärs mit einer "Forth Talk" API? Ginge das in etwa so:

decimal
: .. bye ;
: ... ; \ dummy

: talk ... ; \ enable output, turn on numbers, etc.
: silent ... ; \ disabel output, turn off numbers, etc.

\ Rechner-A
vocabulary ich
ich definitions
: A-AN ich also forth talk ;
: A-AUS only ich silent ;

.... und ein weiterer Rechner hat:

\ Rechner-B
vocabulary ich
ich definitions
: B-AN ich also forth talk ;
: B-AUS only ich silent ;


dann Rechner-C, Rechner-D...

Es gibt eine Terminal Verbindung aller untereinander. Ein Master
schickt zB A-AN an alle. Nur der Rechner-A kann das verarbeiten und
schaltet sein Forth (oder die Applikationsvokablen) ein, die anderen
schweigen weiter und lauschen. Master und Rechner-A können nun
miteinander in Forth kommunizieren - Daten abrufen, neue Worte
compilieren... bis nach B-AUS ein neuer Rechner aufgerufen werden
kann.

(Wüsste ich wie man gforth "stumm" macht könnte ich das Beispiel
komplettieren. So nimmt es weiterhin Zahlen an, gibt Fehlermeldungen
aus und das cr und ok auch. Aber das Konzept wird deutlich? Immerhin
kann man schon mal was vom Terminal aus simulieren: Nach a-aus geht
nicht mehr viel, nach a-an wieder alles.)

Auf einem micro geht das so: Wenn silent geschaltet ist wird halt der
inputbuffer verworfen falls dort kein gültiges Wort war, und weiter
gelauscht. INTERPRET ist da glaube ich die passende Stelle die
angepasst werden muss.

Gern wüsste ich ja auch wie man mehrere gforths auf einem Rechner
laufen lassen und sich unterhalten lassen kann.

Michael


Mit Zitat antworten
  #9  
Alt 10-31-2009, 05:14 PM
Erich Wälde
 
Beiträge: n/a
Standard multi processor communication AVR, war: Verwendung von Wortlisten

Hallo,

Michael Kalus wrote:
> On 29 Okt., 20:14, Erich Wälde <ew.ng116...*online.de> wrote:
>> Liebe Leute,
>>
>> Forth bietet Wortlisten (Vokabulare). Mir fällt aber nur
>> ein einziger Anwendungsfall ein: eine reduzierte Wortliste
>> für den Anwender ohne super-cow-powers.
>>
>> Wo/wie setzt ihr Wortlisten ein?
>> Was erreicht ihr damit?
>> Wie entscheidet ihr, wann Wortlisten gut sind,
>> und wie entscheidet ihr, was in welche Liste kommt?
>>
>> Bin gespannt auf Eure Antworten,
>>
>> Erich

>
> Wie wärs mit einer "Forth Talk" API? Ginge das in etwa so:
>
> decimal
> : .. bye ;
> : ... ; \ dummy
>
> : talk ... ; \ enable output, turn on numbers, etc.
> : silent ... ; \ disabel output, turn off numbers, etc.
>
> \ Rechner-A
> vocabulary ich
> ich definitions
> : A-AN ich also forth talk ;
> : A-AUS only ich silent ;
>
> ... und ein weiterer Rechner hat:
>
> \ Rechner-B
> vocabulary ich
> ich definitions
> : B-AN ich also forth talk ;
> : B-AUS only ich silent ;
>
>
> dann Rechner-C, Rechner-D...
>
> Es gibt eine Terminal Verbindung aller untereinander. Ein Master
> schickt zB A-AN an alle. Nur der Rechner-A kann das verarbeiten und
> schaltet sein Forth (oder die Applikationsvokablen) ein, die anderen
> schweigen weiter und lauschen. Master und Rechner-A können nun
> miteinander in Forth kommunizieren - Daten abrufen, neue Worte
> compilieren... bis nach B-AUS ein neuer Rechner aufgerufen werden
> kann.
>
> (Wüsste ich wie man gforth "stumm" macht könnte ich das Beispiel
> komplettieren. So nimmt es weiterhin Zahlen an, gibt Fehlermeldungen
> aus und das cr und ok auch. Aber das Konzept wird deutlich? Immerhin
> kann man schon mal was vom Terminal aus simulieren: Nach a-aus geht
> nicht mehr viel, nach a-an wieder alles.)
>
> Auf einem micro geht das so: Wenn silent geschaltet ist wird halt der
> inputbuffer verworfen falls dort kein gültiges Wort war, und weiter
> gelauscht. INTERPRET ist da glaube ich die passende Stelle die
> angepasst werden muss.
>
> Gern wüsste ich ja auch wie man mehrere gforths auf einem Rechner
> laufen lassen und sich unterhalten lassen kann.


Die Idee ist interessant.

Ich beacker grad ein ähnliches Problem: mehrere AVR controller lauschen am
Bus, ich will aber nur mit einem reden. Bei AVR gibt's ein Bit namens
MPCM --- multi processor communication mode. Wenn man den eingeschaltet
hat, dann verwirft die usart hw alle empfangenen Bytes, bei denen das
höchste bit nicht gesetzt ist. Wenn ein Byte empfangen wird, bei dem das
höchste Bit gesetzt ist, dann wird geprüft, ob die restlichen 7 Bit der
Busadresse des contollers entspricht. Wenn ja, dann schaltet dieser
controller in den normalen mode um, und die anderen ignorieren den
Datenverkehr.

Das hab ich gelernt, indem ich mir die Quellen von Lubos Pekny's
mFC Projekt angeschaut habe.
http://www.forth.cz

Das ist eine ganz andere Lösung, aber vielleicht auch von Interesse.

Ciao,
Erich



Mit Zitat antworten
  #10  
Alt 11-05-2009, 12:10 PM
Heinz Schnitter
 
Beiträge: n/a
Standard Re: Verwendung von Wortlisten

Anton Ertl schrieb:
> Bernd Paysan <bernd.paysan*gmx.de> writes:
>> Wordlisten sind gut, wenn dasselbe Wort in unterschiedlichen Kontexten
>> unterschiedliche Bedeutungen hat - z.B. AND in Forth führt das AND direkt
>> aus, AND im Assembler erzeugt einen entsprechenden AND-Befehl im Code.

>
> Das ist aber ein gutes Beispiel, warum die Loesung mit wordlists nicht
> so toll ist: Oft will man im Assembler-Code auch ein Forth-AND
> ausfuehren, z.B. um eine Bitmaske zu berechnen, dann muss man
> muehselig zwischen den wordlists hin- und her-schalten, und das ganze
> wird schwierig zu lesen. Was ich stattdessen lieber mache, ist, den
> Assembler-Befehl "AND," zu nennen. Das loest nicht nur das
> Namenskollisionsproblem, sondern hilft auch beim Lesen von mehreren
> Assembler-Befehlen in einer Zeile, zumindest wenn man einen
> Postfix-Assembler verwendet. Die Assembler-Befehle sind trotzdem in
> einer eigenen Wordlist.
>
> - anton


Eine simple, aber wirksame Anwendung von wordlists:

In ONF Open Network Forth kommunizieren über 100 Knoten in Forth
miteinander.
Dort verwende ich eine wordlist NET. In diese Liste werden alle Worte
eingetragen, die über das Netz aufgerufen werden. Die Suchreihenfolge
ist so manipuliert, dass grundsätzlich immer zuerst NET durchsucht wird.

Man erreicht so, dass diese Worte schnell gefunden und ausgeführt werden
und das ohne große Programmierarbeit.

- Heinz


Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Verwendung Hermann Glatter. Newsgroup de.comm.software.40tude-dialog 18 10-15-2009 06:50 PM
Re: Chili Verwendung Ludger Averborg Newsgroup de.rec.garten 5 09-22-2009 08:57 PM
Verwendung von var ChristianH Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp 68 04-15-2009 05:58 PM
Verwendung von While Christian Mauerer Newsgroup microsoft.public.de.sqlserver 2 03-20-2009 08:37 PM
Verwendung von RSS Peter Schütt Newsgroup de.comm.infosystems.www.authoring.misc 3 11-07-2008 06:34 PM


Alle Zeitangaben in WEZ. Es ist jetzt 07:27 AM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints