記事一覧
- はじめに(この記事)
- マルチパスコンパイラ
- 定数に関する最適化
- プログラムの構造
- .....
対象読者
- コンパイラの内部構造について興味がある方
- コンパイラに関して精通している方(批評お待ちしております)
はじめに
ある程度コンパイラについての学習が進み,小さな自作言語などを作れるようになると,こんな疑問が浮かぶのではないでしょうか.
「世の中のコンパイラって,こんなのだったっけ?」
コンパイラの作り方が解説されている日本語の記事は,最近なら簡単に見つかります.ですが,それらの大半は所謂ワンパスコンパイラの作り方について解説しており,より高度な,具体的には gcc
や clang
等の実用的コンパイラが行っている最適化というものについての記述が乏しいです.
(もちろん,ドラゴンブックや虎本を読めば最適化について書いてありますが,初心者が簡単に手を出せるものではないように思えます.少なくとも私はそうでした.)
次の記事以降では,簡単な最適化手法からアーキテクチャに依存するような高度なものまで,私の勉強もかねて紹介していこうと思います.一連の記事を読み終えた人が(書き終わるのが一体いつになるのかはわかりませんが...),clangが-O3
で生成する程度の機械語を吐き出せる自作言語処理系を作れるようになれば良いなと考えています.
扱う最適化手法
この一連の記事では主に,プログラムの実行時間を短くするための最適化について扱います.
使用メモリ量・電力量についての最適化は,私は詳しくないので扱う予定は今のところありません.もしかしたら,自分の勉強のために記事としてまとめるかもしれません.
解説の難易度
次回以降,最適化手法について紹介・解説していきますが,未だにどの程度詳しく解説すればいいのか悩んでいます.
手法の紹介とそのアルゴリズムの簡単な説明,で留めるべきか.疑似コードまでしっかり書いて,読者が動作するコードを書けるように準備をするべきか.
コメントで意見をもらえると嬉しいです.