Momentan dient diese Seite der Berichterstattung zu Mascor, einem Computer-Simulator, der vormals YaCC – Yet another COSI Clone hieß und im Rahmen einer Informatik-GFS in der 12. und 13. Klasse am Erich Kästner Gymnasium entstand. Da dieser Maschinencodesimulator das Vorgängerprogramm COSI ersetzt und am EKG zu Lehrzwecken eingesetzt wird, haben sich die Entwickler dazu entschlossen, diese Software weiterzuentwickeln und berichten hier über den Fortschritt.
Das lange Suchen hat nun nach einigen Jahren endlich seit etwa zweieinhalb Woche ein Ende, es wurde ein neuer Name gefunden: YaCC – Yet another COSI Clone wird nun in Mascor umbenannt, was für Maschinencodesimulator steht. Auch der Name des Compilers, der einfachen C-Code nach Mascor umwandeln soll, wurde bereits festgelegt. Er wird später unter Mascpilor verfügbar sein.
Die Entwickler haben sich dazu entschlossen, weitere grundlegenede Dinge in der Architektur zu verändern, sodass die Software flexibler und erweiterbar wird. So können beispielsweise selbstdefinierte Befehle erstellt und verwendet werden. Nach bisheriger Planung wird hierfür die komplett überladene ALU aufgegeben und die Code-Ausführung direkt in die Befehle ausgelagert. Dies ist zwar ein deutlicher Bruch mit der Realität, bringt allerdings einige Vorteile mit sich, wie z.B. die schlichte verbesserte Lesbarkeit des Quelltextes und die einfache Befehlserweiterung. Ein sehr simples Steuerwerk wird dann die Simulation steuern.
Eine andere Erweiterung betrifft den Standardbefehlssatz, der ab Version 1.1 auch Ein- und Ausgaben durch Syscalls (welche im Übrigen ebenfalls erweiterbar sind) ermöglicht.
Der angekündigte Bugfix des
STO B <NUMBER>
-Problems ist nun als erster Release-Candidate
auf SourceForge verfügbar. An dieser Stelle nochmals ein
Danke an die Entdecker dieses Bugs. Mit diesem Update wurden auch die Debugausgaben auf der
Konsole entfernt.
Vor genau einer Woche, am 27. November, berichteten Manuel Hühmer und Renzo von einem Fehler in der finalen YaCC-Version. Dieser ist auf den übereifrigen Speicherschutz von YaCC zurückzuführen. Folgendes Codefragment wurde von den Schülern eingesendet:
0 1 2 3 |
LDA U 10 PUS STO B 0 END |
---|
Dieses YaCC-Programm kann auch als YaCC-/COSI-kompatible Datei heruntergeladen werden.
Wurde dieses Testprogramm in YaCC simuliert, so wurde beim Befehl
STO B 0
fälschlicherweise „RAM-Überlauf: Ungültige RAM-Adresse 1400!“ gemeldet.
Beim Entwickeln der Software wollten wir YaCC mit einem Speicherschutz ausstatten und haben mit
diesem wohl ein bisschen übertrieben. Jedenfalls ist nun dieser Fehler behoben, sodass im
Stack nachher die Zahl 10
in Adresse 1400
steht.
Wenn nun keine Fehler mehr gefunden werden und der schnelle Patch korrekte Ergebnisse liefert, wird die neue Version in den nächsten Tagen auf SourceForge freigegeben und hier verlinkt.
Bildschirmfoto von YaCC – Yet another
COSI Clone Version 1.1
Nach drei Jahren ist es endlich soweit: Die Version 1.0 von YaCC – Yet another COSI Clone wurde gestern Abend, am Mittwoch, den 17. September, veröffentlicht! Sie ist identisch zum Release Candidate 6, bis auf den Menüpunkt „Hilfe“ → „Hilfe... [F1]“. Hier wird nun endlich eine kleine Hilfe-Datei im Webbrowser geöffnet. Die Veröffentlichungszeiten sind schon sehr Debian-ähnlich, könnte man meinen. Und in der Tat, die Entwickler verwenden Debiansysteme, was aber dann doch eher zufällig ist.
Mit dem gestrigen Stable-Release wurde auch eine aktuelle Dokumentation in Form von JavaDoc hochgeladen und steht im Downloadbereich unter der Dokumentationsrubrik bereit.
Indes gehen die Entwicklungen für die Version 1.1 weiter, welche zahlreiche Neuerungen mitbringt, die sowohl im Unterbau, als auch in der Oberfläche und Bedienung vorgenommen werden. So werden für den Benutzer als größte Änderung beispielsweise die Kommentarfunktion genannt, mit der COSI-/YaCC-Programme dokumentiert werden können, sodass diese auch nach längerer Zeit auch leicht verständlich bleiben.
Des weiteren wird der Unterbau sehr stark verändert, beispielsweise die doppelte Speicherung der Befehle im RAM und der Zahlen im Stack entfallen. Hier wurden früher ein spezielles RAM- und Stackmodel verwendet, was durch ein TableModel ergänzt wurde. Nun werden beide Models zusammengefasst, sodass eine einfachere Verwaltung möglich ist.
Auch sollen ab der Version 1.1 verschiedene Sprachen – vorerst deutsch und englisch – in der Oberfläche unterstützt werden und eine Konfigurationsdatei hinzukommen, in der Programmeinstellungen (Position und Größe des Hauptfensters, Symbolleisten- und Panelsichtbarkeiten, ...) gespeichert werden können.
Um die Verwechslung mit der freien Software Yacc – Yet another compiler compiler zu
unterbinden, muss YaCC – Yet another COSI Clone unbedingt umbenannt werden. Hierzu
wird noch ein Name gesucht. Namensvorschläge können über nachfolgendes
Formular eingesendet werden. Es wurde bereits ein neuer Name gefunden:
Mascor
Angedacht waren Namen wie Oimacs für Oimacs is machine code
simulation
, was lustigerweise etwas an Emacs erinnert, Cosim aka
COSI improved
bzw. Computersimulator
oder auch Folie
als Wortspiel zu ALU-Folie
. Brain oder cor würden
sich auch anbieten, wobei Brain auch eine nette Anspielung auf Monty Pythons
Life of Brian ist. Optimal ist natürlich ein Begriff aus Welt von Monty Python, der
sich dann auch noch in nette (rekursive) Akronyme umbauen lässt. ;-)
Hier gibt es eine komplette Liste von allen Vorschlägen,
die dort auch bewertet werden können.
Elektronische Kontaktmöglichkeiten durch Anfordern von /kontakt.