Entsprechend Dieser Artikel gcc verwendet mehrere Zwischenformate, bevor Code generiert wird. Ich habe gelesen, dass das GIMPLE-Format drei Adresscodes verwendet, was die am einfachsten zu verwendende Zwischensprache zu sein scheint. Aber ich brauche mehr Details, da ich ein Tool erstellen muss, das den Zwischencode nehmen und etwas Code einfügen kann, bevor der endgültige Code generiert wird.
Dazu muss ich zuerst wissen, wie ich überhaupt den GIMPLE-Formatcode generieren und in einer Datei speichern kann. Also suche ich nach einigen Dokumenten und Beispielen. Wenn jemand mit solchen Dingen gearbeitet hat, kann ich auch die Komplexität dieser Aufgabe kennen, die darin besteht, Code in den Zwischencode einzufügen?
Wenn Sie nach einer Möglichkeit suchen, Code zu generieren, können Sie sich llvm ansehen. Zumindest ist es viel besser dokumentiert.
– Odobenus Rosmarus
1. Februar 2012 um 18:29 Uhr
Siehe auch: stackoverflow.com/questions/1496497/…
– Ciro Santilli OurBigBook.com
25. Juni 2015 um 14:40 Uhr
Nekrolis
Vielleicht fällt es Ihnen leichter, a zu schreiben Plugin für GCC, was es Ihnen ermöglichen würde, die GIMPLE-Generation zu verknüpfen und innerhalb von GCC zu ändern, was die Ausfallzeit beim Speichern, Bearbeiten und anschließenden Kompilieren aus dem GIMPLE-Formular verringern sollte. SCHMELZEN ist ein solches Plugin (obwohl es bietet Weg mehr als nur das Ändern der Darstellungen auf niedrigerer Ebene). Es gibt auch ein schönes PDF Hier auf GIMPLE Plugins ändern.
Ansonsten kann man schauen Hier für Informationen darüber, wie GIMPLE von GCC funktioniert. In Bezug auf das Ausgeben von GIMPLE:
Sie können mit dem Flag -fdump-tree-gimple anfordern, eine C-ähnliche Darstellung des GIMPLE-Formulars auszugeben.
@Abex schade, dass die Seite ausgefallen ist, ich habe mit Ihrem Link aktualisiert, obwohl ich das nächste Mal nur meine Antwort (vorschlagen) bearbeite 🙂
– Nekrolis
30. August 2018 um 9:13 Uhr
Neel
Mit dem Flag können Sie ganz einfach eine GIMPLE-Darstellung jeder Datei generieren -fdump-tree-gimple.
Wenn Sie ein Plugin schreiben möchten, interessiert Sie vielleicht, wie Pässe auf GCC funktionieren. Sie können die Ausgabe jedes Durchlaufs mit Flags in der Form sehen:
-fdump-<ir>-<passname>
Wo ir könnte sein:
tree : Verfahrensinterne Weitergabe an GIMPLE
ipa : Interprozedurale Weitergabe an GIMPLE
rtl : Verfahrensinterne Weitergabe an RTL
Verwenden <passname> = all um alle Dumps zu sehen, zB -fdump-ipa-all.
Farouq
Ich habe die Flagge ausprobiert -fdump-tree-gimple. Es funktioniert nur für die Sprache C/C++ und nicht für andere Sprachen wie Java, Ada, Fortran und Objective-C)
Die Frage ist mit C gekennzeichnet. Die anderen Sprachen sind also nicht relevant.
– Mystisch
22. September 2012 um 10:24 Uhr
14438600cookie-checkSpielen mit dem GIMPLE-Zwischenformat von gccyes
Dies ist ein Link, gcc.gnu.org/wiki/GimpleFrontEnd
– MetallicPriest
1. Februar 2012 um 16:34 Uhr
Ein gutes Beispiel ist bei gcc.gnu.org/onlinedocs/gcc-4.3.4/gccint/GIMPLE-Example.html
– MetallicPriest
1. Februar 2012 um 16:42 Uhr
Wenn Sie nach einer Möglichkeit suchen, Code zu generieren, können Sie sich llvm ansehen. Zumindest ist es viel besser dokumentiert.
– Odobenus Rosmarus
1. Februar 2012 um 18:29 Uhr
Siehe auch: stackoverflow.com/questions/1496497/…
– Ciro Santilli OurBigBook.com
25. Juni 2015 um 14:40 Uhr