Εrnst B. schrieb:
> Für den GCC gibt es ein Go-Frontend und ein MSP430 Backend.
>
> Lassen die sich nicht miteinander verheiraten, so dass nur noch
> Bibliotheken fehlen?
Meines Wissens nach ist der GCC nicht so modular aufgebaut, dass das
ginge. Bei Clang/LLVM wäre das vielleicht der Fall, da man dort LLVM als
"High-Level Assembler" hat, d.h. jeder Compiler der LLVM als Unterbau
benutzt erzeugt eine "Intermediate Representation" (LLVM-IR). Für C/C++
macht das Clang und für Rust eben rustc. Darüber hinaus gibt es noch
unzählige andere Frontends, wie D, Julia, etc. Alle erzeugen LLVM-IR,
auf welche dann noch plattformspezifische Optimierungen angewandt werden
und am Ende das fertige Binary herausfällt.
Das größere Problem an der Ausführung von "High-Level"-Sprachen wie Go
auf Mikrocontrollern ist aber die Runtime, die eben nicht einfach so vom
Himmel fällt und durchaus relativ groß ist und darüber hinaus noch der
fehlende OS-Unterbau, auf welchen sich manche Funktionen der
Standard-Library stützen.
Es gibt bereits eine Go-Implementierung die auf Mikrocontroller abziehlt
und die ebenfalls LLVM als Backend nutzt. Bisher werden nur ARM und AVR
explizit unterstützt aber da es ja für MSP430 ein LLVM-Backend gibt,
könntest du das theoretisch zusammenfrickeln ;)
Hier der Link: https://tinygo.org/