mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe zu Forth !!!!


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Forumgemeinde,

ich brauche etwas Hilfe zu Forth. Ich komme nicht so ganz mit den 
Wörtern klar. Ich habe natürlich eine Word-Liste aber die ist natürlich 
auch auf Englisch. Ich würde gerne mal wissen wie groß der Adressbereich 
ist. Wenn z.B. der Stack leer ist. Dann geben ich z.B. 1 ein, dann 2 und 
dann 3, 4, 5, 6. Das heißt ich habe ganz unten die eins und am TOS (top 
of stack) die 6. Jetzt möchte ich mit dem Befehl SP@ auf die 2 
zugreifen, und auf TOS legen. Aber ich bekomme das irgendwie nicht hin. 
Ich bekomme immer nur komische Zahlen. Ich glaube es liegt auch daran 
das ich eigentlich gar nicht weiß wie groß die Adressen für eine 
eingegebene Zahl ist. Mir ist auch nicht so der unterschied zwischen @ 
und SP@ klar.
Hat von euch jemand Ahnung wie das geht oder wo ich eventuell eine gute 
Beschreibung zu den Wörtern bekomme?
Danke für eure Mühe und einen schönen Abend noch…
Gruß Dirk

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wow. es gibt noch Forth-Programmierer?

die Adresse von Stack-Werten kannst du dir glaubich nicht ausgeben 
lassen, aber um auf "tiefer" am Stack versteckte Werte zuzugreifen gibt 
es "PICK"
1 2 3 4 5 2 PICK .
Gibt "3" aus.

Ansonsten Google nach "Forth Tutorial" findet >1Mio Seiten... vielleicht 
ist ja was brauchbares dabei ;)

/Ernst

Autor: Thomas S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stackgröße + ähnliches ist bei Forth sehr stark implementationsabhängig. 
Sollte also in der Dok der verwendeten Systems enthalten sein.

Gruß Thomas

Autor: cappelone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SP@ gibt die Adresse des Top of Stack auf den Stack ( --- addr) was man 
dann damit machen kann ist implementationsabhängig da Stack Richtung 
grösserer oder kleinerer Adressen wachsen kann .
@ holt Wert aus Speicheradresse in Top of Stack   ( addr --- wert).

Ansonsten www.forth-ev.de

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar,
ich habe es jetzt, glaub ich, kappiert. Wenn ich jetzt z.B. 6 Zahlen 
eingeben (1, 2, 3, 4, 5, 6)die jeweils ein Byte haben, kann ich mit dem 
Befehl: sp@ 4 2@ den Stackpointer erst mal auf TOS bringen, dann um 4 
Byte nach unten setzen und dann die nächsten 2 Byte auf TOS holen, so 
richtig??

Danke noch mal für eure mühe!!!
Gruß Dirk

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, mit welchen forth arbeitest du??

mfg

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, das weiß ich nicht so genau. Es startet mit "THE UNIFORTH SAMPLER" 
von Unified Software Systems. Das haben wir in der Vorlesung zur 
verfügung gestellt bekommen.

Grüße :o)

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch das Buch 'Programmieren in Forth' von Leo Brodie ISBN 
3-446-14070-0 zu bekommen. Gibt es zwar schon lange nicht mehr, ist aber 
ein Super Forth-Buch für Anfänger bis Profie. Besonders interresant ist 
der interne Aufbau von Forth, und das jahrelang vor Smalltalk oder Lisp.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Recht herzlichen Dank für den Tip!!!

Schönen Abend noch und Grüße,

Dirk

Autor: cappelone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dirk Post von 17:55
sp@ 4 2@   gibt die Aktuelle Stackadresse und darüber das 32bitWort von 
Adresse 4 auf dem Stack
Das von Dir beschriebene Verhalten hat   sp@ 4 - @

Autor: Mia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum benutzt du nicht einfach PICK? SP@ gehört AFAIK nicht zum Standard 
ANS Forth.

BTW: Ich emphehle: http://www.forth.com/forth/fph.html
Das Buch ist der Hammer! Anhand dieses Buchen konnte ich nicht nur (ohne 
Vorkenntnisse) relativ schnell FORTH lernen, sondern habe auch ein 
portables Forth-System in C geschrieben.

Autor: cappelone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pick in fig forth
: PICK          DUP + SP@ + @ ;

SP@ kann man zb gebrauchen wenn man den n_obersten Datenstackwert 
ersetzen möchte. Oder man braucht 32bitwert an n. Oder ... .  Das ist ja 
grad eine Stärke von Forth . Code ergibt sich eigentlich aus dem von 
PICK.

Natürlich nicht Standart. Es gibts Fortsysteme deren Datenstack nicht im 
von @ erreichbarem Adressraum liegt, dann muss PICK anders aussehen.

Autor: Schmitt Andrea (andrea83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will  in Forth einen Befehl TWIDDLE der die Daten (256
Gleitkkommazahlen)
im Eingabefeld in bitreverse order umsortiert.
So dass die Beschreibung:
TWIDDLE adr— Umsortierung in bitreverse order gilt, BSP: FFT IN TWIDDLE
3

MFG
Andrea

Autor: Schmitt Andrea (andrea83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich will  in Forth einen Befehl TWIDDLE der die Daten (256
Gleitkkommazahlen)
im Eingabefeld in bitreverse order umsortiert.
So dass die Beschreibung:
TWIDDLE adr— Umsortierung in bitreverse order gilt, BSP: FFT IN TWIDDLE
3

MFG
Andrea

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist ja schon gut.
Offenbar gibt es hier niemanden, der gut genug Forth kann um dir deine 
Hausaufgaben zu erledigen.

Vielleicht weiß aber auch nur niemand, was eine 'bitreverse order' 
eigentlich ist.

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht will sie ja einen DSP in Forth programmieren :-)

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'bitreverse order' mit drei Bits

http://www.mathworks.com/access/helpdesk/help/tool...

Andrea hat anscheinend acht Bits (256 Indices).

Mir ist der Forth Teil unklar.

> BSP: FFT IN TWIDDLE 3

Könnte ich mir zusammenreimen mit Werte (FFT) einlesen (IN) und dann das 
neue Wort (TWIDDLE) darauf anwenden. Was hat die 3 (adr-) zu sagen?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Dame hatte doch diese Hausaufgabe neulich schon mal gepostet.
Scheint ja zwischendurch noch nicht wieder ernsthaft drüber
nachgedacht zu haben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.