Advanced Programming Language Processors

  • 2012 年度版 (2013年度版準備中)

Instructor

Goal and Theme

 本講義では、コンパイラをはじめとする言語処理系の理論、構成法、実装技術について学ぶ。さらに、最近の論文などを通して、この分野での新しいトピックについて議論する。

Abstract

 コンパイラバックエンドは、コード最適化、レジスタ割付、機械語コード生成のフェーズから構成される。これらについての理解を深めるとともに、演習としてそれぞれのフェーズの実装を行う。また、コンパイラを含む言語処理系に関する論文や書籍をピックアップして講師、受講者が紹介し、この分野での新しいトピックについて議論する。

Schedule

テーマ内容
1 コンパイラの構成 フェーズの概要およびコンパイラの全体像
2 レジスタ割付 中間表現とレジスタ割付
3 コード生成(1) コード生成の基本と「式」のコード生成
4 コード生成(2) 「文」のコード生成とコード生成の定式化
5 コード最適化(概要) コード最適化の概要およびデータフロー解析の基礎
6 コード最適化(詳細) 代表的なデータフロー解析とコントロールフロー解析
7 コード最適化(最適化変換1) 基本的な最適化変換、不要コード除去
8 コード最適化(最適化変換2) 効果的な最適化変換、ループ最適化
9 まとめ(コンパイラバックエンド) コンパイラバックエンドの全体像
10 文献紹介(1) メタプログラミング
11 文献紹介(2) ライブラリとフレームワーク
12 文献紹介(3) 関数型言語
13 文献紹介(4) 論理型言語
14 文献紹介(5) ドメイン特化型言語
15 まとめ 総括

授業外に行うべき学習活動

文献紹介の準備、小課題の取り組み(プログラミングとレポート作成)

Materials

配布資料

References

・中田育男、コンパイラの構成と最適化、朝倉書店 ・佐々政孝、プログラミング言語処理系、岩波書店 ・最近の学会論文

Evaluation Method

 授業への貢献度(30%)、期間内に行うレポート(70%)

情報機器使用

 ネットワーク使用あり。オンライン教材を用いることがあるので、コンピュータ持参のこと。

前年度の授業改善アンケートからの気づき

 メンバー間での活発な討議を促進する。