GCC Wikia
登録
Advertisement

GCC のソースコードをひらメソッドで読んでいこうかと思っています.


GCC は,最も歴史が古く,よってたかって世界中の スーパハカー に知恵と技術の限りを尽くして叩かれ続け,今では全てのフリーソフトウェアの礎石となっている,地球が宇宙に誇れるプログラム ((c) shinichiro_h さん & wo さん) です.ぜひあなたも一緒に,この難攻不落の要塞に挑んでみませんか ?


私 (管理人 あろは) は,とりあえず今の所,フロントエンドが何をやっているのか (GCC の内部データ表現形式である木構造,GENERICTree と GIMPLE Tree がどのようにして生成されるのか) を理解したいです.

(RTL を含む,ターゲットアーキテクチャ依存の部分は,あまり興味がありません・・・ (^-^; gcc は 4.x から大きく構成が変わり,従来はフロントエンドでいきなり生成されていた RTL が,ミドルエンドで生成されるようになったそうです.これによってフロントエンドが書きやすくなり,いろいろ夢が広がりそうです)


読み始めは,まずは tree というデータ構造から始めるのが良いと思います.tree.def/tree.h/tree.c あたりの構造を押さえておかないと,フロントエンドの構造を理解するのは困難だと思います.


GCC の開発を開始した Richard Stallman という人は,MIT AI ラボ出身の,筋金入りの Lisp ハッカーなので,Lisp を知っていると理解が早いと思います.Lisp というのは,リスト処理 (LISt Processor) 言語の略で,tree は,その名の通り,高度に設計された線形リストになっています.そのほかにも GCC の内部は,全体的に C 言語で Lisp を書いているような構造になっています.


他にも,TCC (Tiny C Compiler) という,GCC に比べればはるかにコンパクトな C コンパイラも読んでいます.


TCC は素晴らしい

Advertisement