Sunday 17 December 2006

gcc 読み会、続き



今日は、RTLの生成部分をgdbでtraceしながら。Emacs が gdb mode に入らない。gud モードとかになるが、ソースを表示してくれない。

screen -L でlogを取りながら読むんだが uxterm のカーソルでも戻っても上が見れない。そもそも、p *tree とかやると、100行以上でるので役にたたないし。bit filed で色んなものが定義されているのが裏目にでてるな。

bitfield に関しては、やっぱり苦労するらしく、そここに「ここはbitfieldがあるからうんぬん」のコメントがたくさんある。なくしちゃえば良かったのにね。

  execute_pass_list (all_passes);

で、all_passes に入っているroutineが順々に、構文木に適用されていく。構文木はいじらずに、それにくっついているRTLを変更しながら最適化していく感じです。SSA (単一代入表現)は、構文木の一部として実現されているわけね。

expr.c の expand_expr_real_1() で、ほとんど生成されてしまう。*.md から、insn_*.c が4つ生成されるのか。

最適化は読みませんでしたが、まぁ、parse から fprintfで命令が印刷されるところまで読みました。あぁ、tokenizer はすっとばしたな。

読んだファイルと、テストプログラム

http://www.ie.u-ryukyu.ac.jp/%7Ekono/lecture/compiler/gcc/gcc.log

gdb のlog

http://www.ie.u-ryukyu.ac.jp/%7Ekono/lecture/compiler/gcc/gdb.log

emacs 操作のlogがあれば、完璧な再現になりますが、そんなものはありません... text base で emacs を操作してlog取ればよかったな。今度は、そうしよう。

あと、「GCC解読室Wiki」なるものがあるのね。

http://wikiwiki.jp/aloha/?FrontPage

No comments: