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
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment