Programmgröße bei Mikro-Forth

MikroForth für Attiny- und Atmega-Mikrocontroller
Antworten
Didi
Beiträge: 9
Registriert: Mi 28. Nov 2012, 16:08

Programmgröße bei Mikro-Forth

Beitrag von Didi » Fr 31. Mai 2013, 07:54

Hallo,
Mein Forth-Wörterbuch ist mittlerweilen auf über 200 Stück angestiegen.
Bei der Programmiererei ist mir aufgefallen, dass F-Wörter sehr viele RCALLS erzeugen.
Bei meinen letzten Tests waren es z.B. ca. 400!!!. Das sind 800 Bytes plus die entsprechenden
RET-urns 1600!!!. Das heißt eigendlich, dass man möglichst viele Forthworte als A-Worte schreiben sollte.
Ich bin gerade dabei eine Belichtungsuhr für die Leiterplattenherstellung zu programmieren. Es enthält u.a.
LCD-Routinen , Drehimpulsgeber-Routinen, Timer-ISR-Routinen. Dabei stößt man natürlich leicht an die Grenzen
des ATtiny2313.
Deshalb meine Frage: Könnte man nicht den Compiler auf den Attiny 4313 (Preis ca. 1€) erweitern? Durch den doppelten Programmspeicher
wären dann auch etwas größere Anwendungen möglich. An der Attiny-Platine würde sich auch nichts ändern.


Fehlnummerrierung bei Variablen

Bei der Verwendung von Variablen ist mir aufgefallen, daß der Interpreter doppelte Variablennummern vergibt. Das passiert, wenn Variable schon im
Wörterbuch vorhanden sind oder wenn man eine neue Variable in ein vorhandenes Programm zwischen zwei vorhandenen Variablen einfügt. Scheinbar wird nicht geprüft, ob Variablennummern schon vergeben sind.

Grüße Didi

Heinrichs
Beiträge: 173
Registriert: Do 21. Okt 2010, 18:31

Re: Programmgröße bei Mikro-Forth

Beitrag von Heinrichs » Sa 1. Jun 2013, 16:08

Hallo Didi,

da es das Funktionsprinzip unseres einfachen FORTH-Compilers ist, die Kolon-Wörter mithilfe von CALL-Befehlen zu übersetzen, lassen sich die zahlreichen CALLs bei komplexen Programmen nicht vermeiden. (Das Original-Forth arbeitet kaum anders!)

Unser FORTH-Compiler besitzt keine Größenbegrenzung beim Flash-Speicher; deswegen sollte er auch mit dem Attiny4313 zurechtkommen. Wir haben dies aber nicht getestet!

Allerdings ist unser Uploader/Bootloader nur für den Attiny2313 konzipiert. Wenn man den Attiny4313 einsetzen möchte, muss die von FORTH gelieferte HEX-Datei anders übertragen werden.

Zur Frage der Variablen müssen wir noch einmal in den Quelltext schauen; ist schon eine Weile her, dass der geschrieben wurde! ;)

Viele Grüße

M. u. G. Heinrichs

Antworten