GCC 拡張機能を作成する必要があります。GCC で強化された GCC プラグイン API を使用しようとしていますが、文書化が不十分であり、使用するのが非常に難しく、最後のバージョンを使用した例が見つかりません.. .
GCC MeltやGCC python pluginsなどの gcc 拡張機能を作成する方法は他にもたくさんありますが、それぞれの利点/欠点を教えてもらえますか? プラグインを作成する 3 つの方法の間に大きな違いはありますか?
GCC 拡張機能を作成する必要があります。GCC で強化された GCC プラグイン API を使用しようとしていますが、文書化が不十分であり、使用するのが非常に難しく、最後のバージョンを使用した例が見つかりません.. .
GCC MeltやGCC python pluginsなどの gcc 拡張機能を作成する方法は他にもたくさんありますが、それぞれの利点/欠点を教えてもらえますか? プラグインを作成する 3 つの方法の間に大きな違いはありますか?
C++ API と Python プラグインの両方を使用してプラグインを作成しました。私は MELT を試したことがないので、それについて話すことはできません。
私が好むアプローチは、Python を使用することです。この方法でプラグインを起動して実行する方がはるかに簡単です。心配するコンパイルはありません。API は十分に文書化されており、シンプルです。最後に、プラグインをゼロから構築するのは非常に簡単です (単にmake
)。
Python プラグインの使用には、主に 2 つの欠点があります。
私がよく直面する欠点は、GCC の有用な部分のすべてが公開されていないことです。ただし、これは大きな問題ではありませんでした。以前は、必要な機能を Python プラグインに追加するだけで簡単であることがわかりました。
他に考えられる欠点は、Python プラグインが C++ で記述されたプラグインよりも遅い可能性があることです。これは私にとって問題ではありませんでした。
@Basile によると、Melt を使用してプラグインを開発する方が簡単です。利点は次のとおりです。
1) GCC コンパイラーがファイルを処理しているときに、GCC コンパイラーの内部表現を調査するために使用できます。
2) 既存の GCC プラグイン フックを使用して、GCC 内部のミドルエンド表現を処理します。
などなど...