Startseite > Wilkommen > Logbuch > Mehr Compilers
Mehr Compilers
Sonntag 29. Januar 2023, von
Alle Fassungen dieses Artikels: [Deutsch] [English] [français]
In meinem letzten Artikel habe ich SDCC als möglichen Kandidaten für die Erweiterung des C-Compilers für den TLCS900H, die NeoGeo Pocket CPU, untersucht. Dieser Compiler hat bereits ein Backend für den TLCS90, und in der Toshiba-Dokumentation wurde geschrieben, dass beide Befehlssätze gleich aussehen.
Allerdings gibt es drei Probleme:
- Der 900 ist ein 16-Bit-Prozessor mit 32-Bit-Registern, und er hat einen 24-Bit-Bus. Der 90er ist eine 8-Bit-CPU. Die Befehle der beiden sehen gleich aus, aber der zu erzeugende Code ist sehr unterschiedlich.
- Das Backend für den TLCS90 ist keine eigenständige Implementierung, sondern eine Erweiterung des Z80-Backends, was bedeutet, dass eine Anpassung an den TLCS900 nicht einfach sein wird.
- Schließlich fehlt SDCC die Dokumentation für die Backend-Entwicklung.
In den Foren weisen einige Leute darauf hin, dass diese CPU ein besserer Kandidat für andere Compiler wäre, die es erlauben, leistungsfähigere CPUs anzusprechen. Ich habe es überprüft:
- GCC, die GNU Compiler Collection. Ich bin als Benutzer sehr vertraut mit ihr, sie hat viele Vorteile, darunter eine sehr stabile Codebasis. Aber es fehlt ein gutes Tutorial für das Schreiben von Backends.
- LLVM ist ein Compiler unter BSD-Lizenz. Es gibt ein sehr gründliches und aktuelles tutorial für das Schreiben eines Backends für eine fiktive CPU namens cpu0. Allerdings ist der Compiler dafür bekannt, dass er regelmäßig Architekturänderungen erfährt, was bedeutet, dass eine Menge Nacharbeiten für das Backend möglich sind.
Es sind aber noch weitere C-Compiler aufgelistet Wikipedia.
- Ich habe mir SmallC genauer angesehen. Er stammt aus den 1980ern, aber er ist sehr gut dokumentiert, auch für das Backend. Und es wurde für den Schulunterricht verwendet. Aber es ist auch für Z80-ähnliche CPUs konzipiert.
Im Moment habe ich also keinen idealen Kandidaten. Aber es gibt noch andere Compiler, die ich noch entdecken muss...
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)