問題タブ [gimple]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
10907 参照

c - gccの中間GIMPLEフォーマットで遊ぶ

この記事によると、 gccはコードを生成する前にいくつかの中間形式を使用します。GIMPLE形式は3つのアドレスコードを使用していることを読みました。これは、使用するのが最も簡単な中間言語のようです。しかし、最終的なコードを生成する前に、中間コードを取得してそれにいくつかのコードを挿入できるツールを構築する必要があるため、もう少し詳細が必要です。

このために、私は最初に、GIMPLE形式のコードを生成してファイルに保存する方法を知る必要があります。だから私はいくつかのドキュメントと例を探しています。また、誰かがそのようなことを扱ったことがある場合、中間コードにコードを挿入するというこのタスクの複雑さを知ることができますか?

0 投票する
1 に答える
168 参照

c++ - gcc の -fdump-tree-gimple から /[ex] 演算子を見つけられません

-fdump-tree-gimple オプション (GCC 4.6.1) を使用して C++ をコンパイルすると、次の関数を含むコードが得られます。

を使用する簡単なプログラムを作成することで、このコードを取得できますstd::vector<int>。いずれにせよ、私が理解していないコードの部分は の行D.8487 = D.8486 /[ex] 4;です。のソース コードを調べたところ、/usr/include/c++/4.6.1/std_vector.hそのデストラクタは を呼び出すワンライナーです_M_deallocate/[ex]オペレーターの略を知っている人はいますか?これまでに気付いた唯一のことは、RHS オペランドが、ベクトルがパラメーター化する型のサイズであることです。

0 投票する
2 に答える
239 参照

c - なぜ未満の式がgccの式以下に変換されるのか

私はコードの最適化に取り組んでおり、gccの内部を調べています。プログラムで簡単な式を作成し、その式のgimple表現を確認したところ、gccがこれを行った理由がわかりませんでした。式があるとしましょう:

次に、gimple表現では、次のように変換されます。

gccがこれを行う理由がわかりません。それはある種の最適化ですか?そうであれば、誰かが私たちのプログラムを最適化する方法を教えてもらえますか?

0 投票する
1 に答える
332 参照

gcc - GIMPLE_PASSの登録方法は?

次のような単純なプラグインの例を実行しようとしています。

しかしGIMPLE_PASSは事前定義されたイベントではなく、とでgcc-plugin.h何かをしなければならないことはわかっていますが、正確な方法がわからず、例も見つかりませんでした。PLUGIN_PASS_MANAGER_SETUPstruct pass_datatree-pass.h

誰かが私に方法を教えてくれますか?ありがとう。

0 投票する
0 に答える
974 参照

c++ - C/C++ コードを C/C++ コードで記述された 3 つのアドレス コードにコンパイルする方法は?

C/C++ コードを、正当な C/C++ コードでもある 3 つのアドレス コードにコンパイルしたいと考えています。

3 つのアドレス コードを分析し、生成された 3 つのアドレス コードにいくつかの C コードを追加する実験を行っています。変更された 3 つのアドレス コードは、実行可能ファイルにコンパイルされます。

私は gcc で gimple を試しましたが、gimple は単なる C ライクなプレゼンテーションです。便利なツールはありますか?ありがとう〜

0 投票する
2 に答える
886 参照

c++ - GCCプラグインを使用して呼び出された関数名を出力

これを使用して、プログラムの呼び出された関数の名前を出力する必要があります。gcc plugins 後で呼び出されるパスを作成しましたssa pass。すでにプラグインを開始しており、次を使用してそのステートメントをループできますgimple_stmt_iterator

gimpleノードを使用して、呼び出された関数の名前を出力するにはどうすればよいですか?? 呼び出された行番号、呼び出された関数の名前など、他の情報も出力できますか?

0 投票する
2 に答える
197 参照

gcc - gcc Plugin を使用してコンパイルされた c++ ファイルの関数の数を取得します

GCC プラグインを使用してパスを作成しています。これが私のパスです。

したがって、 toto() は定義された関数ごとに実行されます。toto()そうでない場合、実行時にすべての関数の数を取得することは可能ですか?ファイル全体に対してパスを 1 回だけ実行し、FOR_EACH_FUNCTION() を使用してすべての関数をループする方法はありますか? ?