Moin,
ich habe mal meinen Interpreter für eine Assemblerartige Sprache unter
www.roboter.cc/index.php?option=com_nicaiwci&view=project&projectid=1846&Itemid=41 hochgeladen
Er steht unter der GPLv3 Lizenz.
Ich habe das hexfile nicht getestet, schon alleine, weil ich das tuning-Kit habe, aber es sollte funktionieren - wenn nicht melden
Wieso ein neuer Interpreter? Ich habe nur welche für Basic etc. gefunden, die mir zu groß und zu langsam sind, und oft auch vorkompilierten Code auf den AVR laden - ich möchte aber notfalls direkt auf dem AVR was ändern wollen. Der Interpreter selbst braucht nur ca. 2 KByte Flash und sehr wenig RAM. Außerdem schafft er ca. 100.000 Befehle pro Sekunde auf einem AVR mit 20 MHz.
Bei der Assemblersprache habe ich darauf geachtet, dass sie noch einigermaßen von Hand programmierbar ist, ich mir bei dessen Interpretierung keinen Ast abbreche. Jede Anweisung ist 4 Bytes lang, die Dokumentation der Befehle in der interpreter.h sollte selbsterklärend sein. Jedes Kommando hat das Format Command Subcommand Operand1 Operand2, wobei das Subcommand definiert, wie die Operanden interpretiert werden sollen. Der Speicher ist in 16 Bit Worten addressiert, es gibt aber auch einen 8 Bit Modus.
In interpreter_programs gibts ein paar einfache Testprogramme, die in der interpreter_tests verwendet werden.
Ich habe die Aufrufe zur bewegung und zur hinderniserkennung rausgeschmissen, weil das andere Projekte sind - wenn ich damit zufrieden sind kommen sie aber in eigene Projekte auch hoch
Was fehlt:
* Stack
* Unterprogrammaufrufe mit Statussicherung
* einfache Stringbearbeitung (lesen / schreiben)
Die nächsten Pläne sind ein einfachster Editor auf der Biene, ein Dateisystem (fürs RAM und EEPROM) und eine minimale Shell. Dann bin ich soweit, dass man auf der Biene selbst programmieren kann - entweder über die serielle Schnittstelle oder direkt via dem BGX1. Letzteres kann v.a. für kleine Korrekturen und Anpassungen sehr hilfreich sein.
Kommentare? Fragen? Anregungen? Immer her damit