27++'s Report

東京大学で行われた「大規模ソフトウェアを手探る」実験においてgccコンパイラーに機能の追加を行った。その際の奮闘を描いた日記(風レポート)。


このブログには東京大学電子情報・電気電子工学科にて行われた「外規模ソフトウェアを手探る」実験において使用の変更、追加を行ったgccについて書かれています。実験日に沿った日記風レポートとなっていますが、実際の進捗とブログの進捗には多少の差があることをここに断らせていただきます。
行ったことは"-o"オプションなしでhoge.cをコンパイルしたときhoge.outとなる変更、及び文末の";"の抜けを自動で補填する変更である。

まとめ(変更箇所の紹介記事リンクとgccの仕組み)

手探るgccのソースコードのダウンロード方法(初日)



結局なにをどう変更したのか(まとめ)

結局、どこをいじったのかだけ見たい忙しい人向け。 これだけ読めばどこを変えたのかがわかる。

文の意味変わらないし、句読点ってなんなん?(3)

最終日を残して(実際の最終日は投稿日ではないのだがトップで断っている)だいたい実装を終えてしまった僕達であったが、";"落としたらいけない反例が見つかってしまった… それは変数宣言後の";"である。つまり、 int main(){ int i i=1 printf("%d\n",i) } …

文の意味変わらないし、句読点ってなんなん?(2)

さて、前回アセンブリの領域に入ってしまい詰んでしまったように思われたがエラーを吐いている関数obj->func->exec_child()の引数に実行可能ファイルcc1が入っていることがわかった。 ここで/home/denjo/gcc_install/libexec/…/cc1をデバッグすることにした…

文の意味変わらないし、句読点ってなんなん?(1)

さて、前回で"hoge.c"をコンパイルしたときコマンド無しで"hode.out"となるような改造を実装できた。そこで次の目標を立てることにした。 みなさん、こんにちわ と みなさん、こんにちわ。 とで相手に伝わる意味が変わるのだろうか。変わらない。 あくまで句…

a.outってなんやねん(4)

gcc のオプションに"-v" なるものが存在するらしい。このコマンドはgccが実行したすべてのコマンドを見ることができるという。 $ ./gcc -v test.c /home/denjo/gcc_install/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/collect2 -plugin /home/denjo/gcc_install…

a.outってなんやねん(3)

二日目に結局どこで"a.out"を決定していたのかわからなかった僕らは、直接"a.out"を出力ないし渡している関数があるのではないかと思い、grepコマンドに頼ることにした。 フォルダーを"/home/denjo/gcc-6.2.0/gcc"に指定して、ターミナルに $ grep -r -I "a/…

a.outってなんやねん(2)

さて、早速デバッグに取り掛かろう! GNU Debuggerを用いてデバッグを行った。 デバッグを行う前に、gccと同じディレクトリ内(/home/denjo/gcc_install/bin)にc言語で書かれたプログラム、test.cを用意した。 test.c #include <stdio.h> int main(){ printf("Hello Wo</stdio.h>…

a.outってなんやねん(1)

gccコンパイラーを用いたことがある人なら誰もが一度は gcc ファイル名.c でコンパイルを行い、a.out(Cygwin環境ならばa.exe)という実行可能ファイルを生成したことがあるだろう。また、 gcc -o hoge hoge.c でコンパイルしてhoge(hoge.exe)という実行可能フ…