Spielen mit dem GIMPLE-Zwischenformat von gcc

Lesezeit: 3 Minuten

Benutzeravatar von MetallicPriest
MetallicPriest

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?

  • 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

Benutzeravatar von Necrolis
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.

  • Ich bin der Hauptentwickler von MELT und habe vor ein paar Tagen neue Tutorial-Folien hinzugefügt gcc-melt.org/GCC-MELT-HiPEAC2012.pdf (es gibt auch andere Sachen von gcc-melt.org …)

    – Basile Starynkevitch

    1. Februar 2012 um 17:36 Uhr

  • gcc-melt.org ist tot, neuer Link ist starynkevitch.net/basile/gcc-melt/GCC-MELT-HiPEAC2012.pdf

    – Abex

    29. August 2018 um 3:22 Uhr

  • @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

neels Benutzeravatar
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.

Benutzeravatar von Farouq
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

1443860cookie-checkSpielen mit dem GIMPLE-Zwischenformat von gcc

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy