Forum: Mikrocontroller und Digitale Elektronik Fragen zu Forth


von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Ich lese mich gerade in Forth ein, weil ich das irgendwie spannend 
finde. Ein paar Sachen hab ich noch nicht ganz verstanden

Was bedeutet es, wenn etwas in Klammern steht, z.B.
1
SWAP ( a b -- b a, exchanges top two values )

Ist das lediglich eine Art Kommentar? Ich habe nicht den Eindruck, als 
hätte das einen Einfluss auf das Programm.


amforth vs. avrforth: Beides sind Implementierungen, die aktuell 
entwickelt werden. amforth scheint vor allem auf kleinere AVR 
zugeschnitten zu sein und braucht kein externes RAM. avrforth läuft, 
soweit ich das bisher gesehen habe, nur auf dem ATmega64/128 oder CAN128 
und braucht anscheinend auch externes RAM.

Ist avrforth umfangreicher? Kann man die Wörter von avrforth auch für 
amforth nutzen?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

hab grade mal im Forth-Handbuch zum AIM65 nachgelesen (mein erster 
Computer 1979), das muß ein Kommentar sein. Mit SWAP werden die beiden 
obersten Variablen auf dem Stack getauscht, mit .S kann man den 
Stackinhalt auflisten lassen.

von Karl H. (kbuchegg)


Lesenswert?

Markus Burrer schrieb:

> Was bedeutet es, wenn etwas in Klammern steht, z.B.
>
>
1
SWAP ( a b -- b a, exchanges top two values )

Das ist die Forth übliche Dokumentation in Form eines KOmmentares. Er 
zeigt, welche Auswirkungen die Operation auf dem Stack hat

   Stackinhalt_vor_der_Operation -- Stackinhalt_nach_der_Operation

Hier ist es: a und b werden auf dem Stack vertauscht.

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Ok, danke. Also was ich vermutet habe. Fand es nur befremdlich, dass 
diese Schreibweise in sämtlichen Dokumentationen einfach so auftaucht, 
ohne näher erläutert zu werden bzw der Hinweis gut versteckt war, dass ( 
) auch Kommentare sind. Gedit zeigt es leider nicht als Kommentar an.

Bei avrforth habe ich inzwischen gesehen, dass wohl auch kleinere AVR 
möglich sind, einschließlich Mega8. Bei avrforth scheinen mehr Module 
dabei zu sein, dafür ist die Dokumentation mehr oder weniger inexistent.

Welches der beiden sollte man sich denn näher anschauen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es gab mal einen Homecomputer, der mit Forth programmiert wurde, der 
Jupiter ACE. Das Gerät hatte aus verschiedenen Gründen keinen 
erwähnenswerten wirtschaftlichen Erfolg, so hatte es nur 3 kiB RAM, von 
dem 956 Bytes für eigene Programme und Daten zur Verfügung standen ... 
OK, das war 1983.

http://www.jupiter-ace.co.uk/index.html

Hier http://home.micros.users.btopenworld.com/JupiterAce/JupiterAce.html 
findet man alles, was man zum Nachbau benötigt.

von Karl H. (kbuchegg)


Lesenswert?

Markus Burrer schrieb:

> Bei avrforth habe ich inzwischen gesehen, dass wohl auch kleinere AVR
> möglich sind, einschließlich Mega8.

Wundert mich nicht.
Der Forth Kern, der in Assembler geschrieben ist, ist ja extrem winzig. 
Alles andere darüber ist schon in Forth selber geschrieben. Und je 
nachdem, kann man natürlich auch viele Worte einfach weglassen, sofern 
nicht andere Worte darauf aufbauen.

> Welches der beiden sollte man sich denn näher anschauen?

Wenn du anfängst, würde ich das einfachste Forth nehmen, das ich kriegen 
kann.
Ich muss allerdings dazu sagen, dass ich mir Forth auch schon ein paar 
mal angesehen habe und dann doch immer wieder die Finger davon gelassen 
habe. Für mich ist diese konsequente Umsetzung der UPN eben nichts. Ich 
persönlich komm da immer durcheinander. Das mag daran liegen, dass ich 
einfach schon zu viel in der "konventionellen" Programmierung versumpft 
bin und meine Denkweise nicht mehr so einfach umstellen kann.


Letzten Endes ist es aber so, dass der Forth-Basiswortschatz überall 
gleich ist. Lediglich spezifische Erweiterungen unterscheiden das eine 
vom anderen Forth. (So war das auch vom Erfinder gedacht: Forth ist eine 
Sprache, mit der man sich seine 'Befehle' anwendungsspezifisch 
zusammensetzt)

von Markus B. (Firma: Embedit Mikrocontrollertechnik) (_mb_)


Lesenswert?

Karl heinz Buchegger schrieb:
> Wundert mich nicht.
> Der Forth Kern, der in Assembler geschrieben ist, ist ja extrem winzig.
> Alles andere darüber ist schon in Forth selber geschrieben. Und je
> nachdem, kann man natürlich auch viele Worte einfach weglassen, sofern
> nicht andere Worte darauf aufbauen.

Ich dachte eher an das RAM. Ich hab eine (ältere) Implementierung 
gesehen, für die man externes RAM benötigt hat

Karl heinz Buchegger schrieb:
> Wenn du anfängst, würde ich das einfachste Forth nehmen, das ich kriegen
> kann.

Einfach ist relativ. Beide genannten Implementierungen scheinen ähnlich 
zu sein. amforth ist besser dokumentiert, avrforth bringt mehr "Treiber" 
mit. Werde versuchen, mal beide zu testen

von Peter F. (funkentratzer) Benutzerseite


Lesenswert?

Hallo Markus,
 wenn Du Mittwoch abends Zeit hast: 
http://forth-ev.de/article.php/20080120222945626

Da hängt auch der Matthias Trute (amforth) regelmässig ab, und man kann 
Fragen stellen.

Servus,
 Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.