Moin, hat hier jemand Erfahrung mit Interpreterentwicklung in LLVM? Ich bin dabei, ein kleines Tool zu entwickeln, das Filter berechnen kann (sowohl digital als auch analog). Dieses Tool wird einen Interpreter enthalten, der recht allgemeine numerische Ausdrücke (alles, was es im wissenschaftlichen Taschenrechner gibt, dazu Gleichungssysteme lösen usw.) verarbeiten muss. Meine Recherche hat ergeben, dass LLVM dafür ideal sein sollte. Allerdings müsste ich die LLVM IR Sprache erst lernen. Wo liegen die Nachteile, wenn ich die eingegebenen Befehle erst in C code übersetze, den C code dann "live" kompiliere und sofort ausführe? Macht der LLVM nicht dassselbe mit LLVM IR als Zwischensprache? Ob die Übersetzung ein paar Sekunden länger dauert oder nicht, spielt keine Rolle. Wichtig ist, dass der endgültige, ausführbare Code mit maximaler Geschwindigkeit läuft. Wünsche allen einen schönen Sonntag Lars
Lars schrieb: > Wo liegen die Nachteile, wenn ich die eingegebenen Befehle erst in C > code übersetze, den C code dann "live" kompiliere und sofort ausführe? > Macht der LLVM nicht dassselbe mit LLVM IR als Zwischensprache? Natürlich. Direkt LLVM-IR einzusetzen ist nur dann sinnvoll, wenn du damit Optimierungen ausdrücken kannst, die in C nicht (oder nicht so einfach) möglich wären. Bei deinem Kenntnisstand ist das wahrscheinlich nicht der Fall. Und C ist portabler als LLVM. (Was dir wahrscheinlich egal ist, sonst hättest du nicht gefragt. :)
:
Bearbeitet durch User
Es scheint ja so, dass mit der LLVM das Parsen, IR-Befehle generieren und Ausführen des generierten Codes alles im RAM passieren kann. Bei C muss ich erst eine C-Datei schreiben, diese mit gcc (z.B.) in eine Objektdatei übersetzen, die übersetzte Datei als dll/so-library linken und dann ausführen. Das sind viele Dateisystemzugriffe. Oder geht das Kompilieren und Ausführen auch in C komplett im RAM? Lars
Eine C Datei im RAM zu erstellen und dann in einen C Compiler zu "pipen" sollte nicht das Problem darstellen.
derElf schrieb: > Eine C Datei im RAM zu erstellen und dann in einen C Compiler zu "pipen" > sollte nicht das Problem darstellen. Tja, wenn man den C Compiler dann auch noch im RAM installiert und ihm eine RAMDisk als Dateisystem gibt, dann macht es vielleicht auch Sinn, die C-Datei über Sockets zum Compiler zu schicken. Sonst nicht.
Clemens L. schrieb: > Direkt LLVM-IR einzusetzen ist nur dann sinnvoll, wenn du damit > Optimierungen ausdrücken kannst, die in C nicht (oder nicht so einfach) > möglich wären. Bei deinem Kenntnisstand ist das wahrscheinlich nicht der > Fall. Du hast Recht. Bei meinem gestrigen Kenntnisstand war das nicht der Fall. Aber man lernt ja dazu. Fakt ist, dass bei typfreien dynamischen Sprachen wie Octave der LLVM wesentliche Vorteile bietet. Anhand fertiger Beispiele konnte ich den Performancevorteil testen, den LLVM bietet, indem es Funktionsaufrufe für die Argumentlisten optimiert, die tatsächlich zur Laufzeit vorkommen. Wenn ich stattdessen jedesmal den C-Compiler anschmeiße, wird der Interpreter reichlich ... ... sagen wir mal ... "speziell". Dies nur für alle, die sich auch irgendwann mit LLVM beschäftigen wollen, und denen irgendein Haiopei was von fehlenden Kenntnissen einreden will. Es ist alles möglich und überhaupt nicht schwer :) Lars
Lars schrieb: > Dies nur für alle, die sich auch irgendwann mit LLVM beschäftigen > wollen, und denen irgendein Haiopei was von fehlenden Kenntnissen > einreden will. Es ist alles möglich und überhaupt nicht schwer :) Dann sei doch mal so lieb und schlau mich mal auch etwas auf :-) Ich dachte immer LLVM-IR hat SSA Forms und man kann die nur mit IIi ausführen, was aber 1. ein JIT compiler & 2. ein Cmdlinetool ist. Gibts das etwa auch als LIB fct ? Ansonsten müsstest Du den SSAs ja erst mal "physischen" Speicher zuordnen, inkl. dem ganzen Tanz des Memory managments. Oder ? Bei Deinem Projekt ist mir aber auch allgemein etwas unklar. Warum nimmst Du nicht eine "fertige" Skriptsprache. Die lassen sich doch meist einfach in den eigenen Code einbauen. Oder noch einfacher: Nimm Octave. Da hast Du doch eigentlich fast alles dabei. Matlab hat auch passende Toolboxen. USW. USW. Grüße Andreas
Andreas H. schrieb: > Dann sei doch mal so lieb und schlau mich mal auch etwas auf :-) Wozu? Spiel einfach weiter Bullshit-Bingo. Damit kommt man auch bei größter Ahnungslosigkeit hervorragend durchs Leben, wenn man außer Dummschwätzen nichts leisten muss.
Lars schrieb: > Spiel einfach weiter Bullshit-Bingo. Brauch ich nicht. Bei mir läuft es ja :-D Grüße Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.