最適化コンパイラへのいざない (1) 導入

公開:2020/09/18
更新:2020/09/19
1 min読了の目安(約800字TECH技術記事

対象読者

  • コンパイラの内部構造について興味がある方
  • コンパイラに関して精通している方(批評お待ちしております)

もくじ

  1. 導入 (この記事)
  2. (予定) 最適化コンパイラとは何か
  3. (予定) コンパイラになってみる
  4. .....

はじめに

ある程度コンパイラについての学習が進み,小さな自作言語などを作れるようになると,こんな疑問が浮かぶのではないでしょうか.

「世の中のコンパイラって,こんなのだったっけ?」

コンパイラの作り方が解説されている日本語の記事は,最近なら簡単に見つかります.ですが,それらの大半はgcc等の実用的コンパイラが行っている最適化というものについての記述が乏しいです.
(もちろん,ドラゴンブックや虎本を読めば最適化について書いてありますが,初心者が簡単に手を出せるものではないように思えます.少なくとも私はそうでした.)

次の記事以降では,簡単な最適化手法からアーキテクチャに依存するような高度なものまで,私の勉強もかねて紹介していこうと思います.一連の記事を読み終えた人が(書き終わるのが一体いつになるのかはわかりませんが...),gccが-O1で生成する程度の機械語を吐き出せる自作言語処理系を作れるようになれば良いなと考えています.

扱う最適化手法

この一連の記事では主に,プログラムの実行時間を短くするための最適化について扱います.
使用メモリ量・電力量についての最適化は,私は詳しくないので扱う予定は今のところありません.もしかしたら,自分の勉強のために記事としてまとめるかもしれません.

解説の難易度

次回以降,最適化手法について紹介・解説していきますが,未だにどの程度詳しく解説すればいいのか悩んでいます.
今のところ,可能な限り疑似コードなどを提示しようと思っています.
コメントで意見をもらえると嬉しいです.

余談

この記事は,もともと別の場所で公開していたものです.前よりも読みやすい記事を目指します.