Ich suche einen JIT-Compiler oder eine kleine Compiler-Bibliothek, die in mein Programm eingebettet werden kann. Ich indent, um es zu verwenden, um dynamisch generierten Code zu kompilieren, der komplexe Zahlenarithmetik durchführt. Der generierte Code hat eine sehr einfache Struktur: keine Schleifen, keine Bedingungen, aber sie können ziemlich lang sein (ein paar MB, wenn sie von GCC kompiliert werden). Die Leistung des resultierenden Maschinencodes ist wichtig, während mir die Geschwindigkeit der Kompilierung nicht wirklich wichtig ist. Welcher JIT-Compiler ist für meinen Zweck am besten? Danke!
Detaillierte Anforderungen
Cint ist ein C ++ (ish ), die die Möglichkeit bietet, kompilierten Code und interpretierten Code zu mischen. Es gibt eine Reihe von Optimierungstools für den Interpreter . ROOT erweitert dies noch weiter, indem es die Kompilierung und Verknüpfung zur Laufzeit zur Laufzeit unterstützt (siehe den letzten Abschnitt von Ссылка ), obwohl es anscheinend den System-Compiler verwendet und daher möglicherweise nicht hilft. Der gesamte Code ist Open Source.
Ich benutze regelmäßig alle diese Funktionen als Teil meiner Arbeit.
Ich weiß nicht, ob es die SIMD-Anweisungen aktiv nutzt, aber es scheint alle anderen Anforderungen zu erfüllen.
Wie ich sehe, verwenden Sie derzeit die Compile-to-Dynamic-Bibliothek unter "Link on the fly" -Methode. Sie könnten jedoch TCC in Erwägung ziehen Ich glaube nicht, dass es viel Optimierung tut und vermuten, dass es SIMD nicht unterstützt.
Klingt wie Sie on the fly kompilieren können, wollen und dann dynamisch laden die kompilierte Bibliothek (.dll oder .so). Dies bietet Ihnen die beste Leistung mit einer ANSI-C- oder C ++ - Schnittstelle. Also vergiss JITing und erwäge, einen C / C ++ - Compiler für die Kompilierung zu erstellen.
Dies setzt natürlich voraus, dass ein Compiler an dem Punkt installiert werden kann, an dem der dynamisch generierte Code tatsächlich erzeugt wird.
Tags und Links jit