3

GCC 拡張機能を作成する必要があります。GCC で強化された GCC プラグイン API を使用しようとしていますが、文書化が不十分であり、使用するのが非常に難しく、最後のバージョンを使用した例が見つかりません.. .

GCC MeltGCC python pluginsなどの gcc 拡張機能を作成する方法は他にもたくさんありますが、それぞれの利点/欠点を教えてもらえますか? プラグインを作成する 3 つの方法の間に大きな違いはありますか?

4

2 に答える 2

4

C++ API と Python プラグインの両方を使用してプラグインを作成しました。私は MELT を試したことがないので、それについて話すことはできません。

私が好むアプローチは、Python を使用することです。この方法でプラグインを起動して実行する方がはるかに簡単です。心配するコンパイルはありません。API は十分に文書化されており、シンプルです。最後に、プラグインをゼロから構築するのは非常に簡単です (単にmake)。

Python プラグインの使用には、主に 2 つの欠点があります。

私がよく直面する欠点は、GCC の有用な部分のすべてが公開されていないことです。ただし、これは大きな問題ではありませんでした。以前は、必要な機能を Python プラグインに追加するだけで簡単であることがわかりました。

他に考えられる欠点は、Python プラグインが C++ で記述されたプラグインよりも遅い可能性があることです。これは私にとって問題ではありませんでした。

于 2015-04-22T18:16:23.967 に答える
3

@Basile によると、Melt を使用してプラグインを開発する方が簡単です。利点は次のとおりです。

1) GCC コンパイラーがファイルを処理しているときに、GCC コンパイラーの内部表現を調査するために使用できます。

2) 既存の GCC プラグイン フックを使用して、GCC 内部のミドルエンド表現を処理します。

などなど...

于 2015-07-24T07:30:31.647 に答える