Von c programierer am Fr, 8. September 2017 um 11:37 #
> LLVM definiert einen virtuellen Befehlssatz, der an > RISC-Maschinen angelehnt ist, aber reichhaltige > Typinformation und Datenfluss-Information zur Verfügung > stellt. Dies ermöglicht zum einen ausgefeilte > Transformationen des Objektcodes, andererseits kann > die Information an das ausführbare Programm > angehängt werden. Dies erlaubt weitere > Transformationen während des Linkens, zur Laufzeit und > an der ausführbaren Datei selbst, während das > Programm nicht läuft.
Heißt das, man könnte ein Executable in einem "virtuellen Befehlssatz" erzeugen und erst beim Start der Anwendung in den Befehlssatz der vorliegenden CPU (z.B. x86 oder ARM) transformieren?
Von e programmierer am So, 10. September 2017 um 02:19 #
Ja.
Interessanter wäre die Frage, ob es nun möglich ist - wenn Crosscompiling keine Option ist, dadurch nur noch das Backend auf andere CPUs/Betriebsysteme etc. zu portieren und das Frontend ggf. als IR zu überliefern und dann im portierten Backend zu kompilieren.
Von Sie haben vergessen, Ihren Nam am So, 10. September 2017 um 09:26 #
Nein. Die Betriebssystemabhängigkeiten sind i.W. im Frontend, und auch vieles CPU-spezifische (Datentypen, optimierte Implementierungen von z.B. memcpy(), ...).
> LLVM definiert einen virtuellen Befehlssatz, der an
> RISC-Maschinen angelehnt ist, aber reichhaltige
> Typinformation und Datenfluss-Information zur Verfügung
> stellt. Dies ermöglicht zum einen ausgefeilte
> Transformationen des Objektcodes, andererseits kann
> die Information an das ausführbare Programm
> angehängt werden. Dies erlaubt weitere
> Transformationen während des Linkens, zur Laufzeit und
> an der ausführbaren Datei selbst, während das
> Programm nicht läuft.
Heißt das, man könnte ein Executable in einem "virtuellen Befehlssatz" erzeugen und erst beim Start der Anwendung in den Befehlssatz der vorliegenden CPU (z.B. x86 oder ARM) transformieren?
Ja, könnte man (JIT)
Webassembly ist so ein ansatz man kann es unter dieser website besser begutachten: http://webassembly.org
Ja.
Interessanter wäre die Frage, ob es nun möglich ist - wenn Crosscompiling keine Option ist, dadurch nur noch das Backend auf andere CPUs/Betriebsysteme etc. zu portieren und das Frontend ggf. als IR zu überliefern und dann im portierten Backend zu kompilieren.
Nein. Die Betriebssystemabhängigkeiten sind i.W. im Frontend, und auch vieles CPU-spezifische (Datentypen, optimierte Implementierungen von z.B. memcpy(), ...).
Schadé.