gcc 読み会、続き
河野真治 @ 琉球大学情報工学です。
今日は、RTLの生成部分をgdbでtraceしながら。Emacs が gdb mode
に入らない。gud モードとかになるが、ソースを表示してくれない。
screen -L でlogを取りながら読むんだが uxterm のカーソルでも
戻っても上が見れない。script の方が良かったか。そもそも、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
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735