私は、マルチコア プロセッサ用に GCC を最適化する作業をしている学生です。ソースコードを調べてみましたが、バックエンドにコードを追加する必要があるため、理解するのは困難です。さまざまなフェーズのコード フローを説明する優れたリソースを提案できますか。また、主にコードをステップ実行するために GCC をデバッグするための開発環境を提案します。Windowsでも可能ですか?
2 に答える
出発点として、GCC サイトのLinks and Selected Readingsを参照してください。あなたが特に興味を持っているのは、次のとおりだと思います。
- GNU C コンパイラの内部
- GCC を使用した関数型プログラミング言語のコンパイル -- Andreas Bauer によるTail Calls
- Hans-Peter Nilsson によるDunces のための GCC の移植
Windows で開発する場合は、GCC の Windows への移植版であるMinGW (Minimalist GNU for Windows) Compiler Suite ソース (GNU GDB デバッガーを含む)から開始する必要があります。
私は C++ で開発していないので、快適な開発環境についてはあまり役に立ちません。しかし、C/C++ 用の優れた IDE が必要だと思います。この比較を見てください。Windows 用のフリー/オープン ソース IDE はたくさんあります。
更新: ICIにも興味があると思います。
対話型コンパイル インターフェイス (または略して「ICI」) は、高レベルのコンパイラに依存しない API と低レベルのコンパイラに依存する API を備えたプラグイン システムであり、現在のコンパイラを共同のオープンなモジュラー インタラクティブ ツールセットに変換します。ICI フレームワークは、コンパイラとユーザー定義可能なプラグインの間の「ミドルウェア」インターフェイスとして機能します。実稼働品質のコンパイラ インフラストラクチャを開いて再利用することで、プログラムの分析とインストルメンテーション、きめ細かなプログラムの最適化、新しい開発と研究のアイデアの簡単なプロトタイピングを可能にすると同時に、新しいコンパイル ツールをゼロから構築することを回避します。たとえば、MILEPOST GCC で使用され、コンパイラとアーキテクチャの設計を自動化し、統計分析と機械学習に基づいてプログラムの最適化を行います。
.. Collective TUNING傘下の残りのプロジェクトとして。
注: BlueRaja がコメントで書いたように、「コンパイラは最も複雑なプログラムの 1 つです」と書くのは言い過ぎです。非常に単純なコンパイラと非常に複雑なコンパイラがあります。しかし、コンパイラ理論では (一度勉強すれば) 難解なことは何もありません。GCC は複雑なプログラムであり、大規模で文書化されていないプログラムとして理解する必要があります1。したがって、落胆しないでください: 利用可能なドキュメントの調査を開始し、GCC 開発者に ( nvlまたはGCC 開発者メーリング リストで提案されているように、GCC irc チャネルで) 不十分な (またはまったくドキュメント化されていない) ドキュメントについて説明するよう依頼してください。
- 実際、プログラム理解は活発な研究分野です。
GCC irc channelを使用することをお勧めします。これは、GCC の開発に関する議論を目的としています。