最新コンパイラ構成技法(神林 靖 神林 靖 Andrew W. Appel 滝本 宗宏 滝本 宗宏)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. 最新コンパイラ構成技法

最新コンパイラ構成技法

翻訳
原著

翻訳
原著

形式:
書籍
発売日:
ISBN:
9784798114682
定価:
5,280(本体4,800円+税10%)
仕様:
B5変・520ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発

最新技法の実装および研究に不可欠な課題を凝縮・網羅!! 理論と実装の卓越した平衡

過去10年の間に、コンパイラを構築する方法には、いくつかの進展が見られた。まず、新しい種類のプログラミング言語が使用されるようになった。たとえば、動的メソッドをもつオブジェクト指向言語や、入れ子になった有効範囲や一級関数閉包をにつ関数型言語である。そしてこれらの言語の多くは、ごみ集めを必要とする。新しいコンピュータは大規模なレジスタセットをもつが、一方でメモリアクセスは大きなペナルティとなるので、命令のスケジューリングや命令やデータをローカルキャッシュに置くためのコンパイラの助けがあるほうが高速に実行できる。 本書は、1学期あるいは2学期用のコンパイラコースの教科書として意図されている。本書を通じて学生は、コンパイラの様々な構成要素の背後にある理論、理論を実践へと結びつけるためのプログラミング技法、そしてコンパイラをモジュール化するためのインタフェースを学ぶことができる。インタフェースとプログラミング例を明確にかつ具体的にするために、それらをMLプログラミング言語で記述した。

第 I 部 コンパイラ基礎編

第1章 はじめに
1.1 モジュールとインターフェース
1.2 ツールとソフトウェア
1.3 木言語のデータ構造

第2章 字句解析
2.1 字句トークン
2.2 正規表現
2.3 有限オートマトン
2.4 非決定性有限オートマトン
2.5 ML-Lex:字句解析器生成系

第3章 構文解析
3.1 文脈自由文法
3.2 予測型構文解析
3.3 LR構文解析
3.4 構文解析器生成系の使用
3.5 エラー回復

第4章 抽象構文
4.1 意味動作
4.2 抽象解析木

第5章 意味解析
5.1 記号表
5.2 Tigerコンパイラの束縛
5.3 式の型検査
5.4 宣言の型検査

第6章 駆動レコード
6.1 スタッフフレーム
6.2 Tigerコンパイラのフレーム

第7章 中間コードへの変換
7.1 中間表現木
7.2 木への変換
7.3 宣言

第8章 基本ブロックとトレース
8.1 正準木
8.2 条件分岐の単調化

第9章 命令選択
9.1 命令選択アルゴリズム
9.2 CISCマシン
9.3 Tigerコンパイラの命令選択

第10章 生存解析
10.1 データフロー方程式の解
10.2 Tigerコンパイラの生存変数

第11章 レジスタ割付け
11.1 単純化による彩色
11.2 合併
11.3 既彩色節
11.4 グラフ彩色の実装
11.5 木に対するレジスタ割付け

第12章 コンパイラ制作

第 II 部 コンパイラ発展編

第13章 ごみ集め
13.1 マークスイープ回収法
13.2 参照カウント
13.3 複写回収法
13.4 世代別回収法
13.5 斬進的回収法
13.6 Bakerのアルゴリズム
13.7 コンパイラへのインタフェース

第14章 オブジェクト指向言語
14.1 クラス
14.2 データフィールドの単一継承
14.3 多重継承
14.4 クラスメンバーシップの検査
14.5 非公開なフィールドとメソッド
14.6 クラスの無い言語
14.7 オブジェクト指向プログラムの最適化

第15章 関数型プログラミング言語
15.1 単純な関数型言語
15.2 閉包
15.3 変更不能変数
15.4 インライン展開
15.5 閉包変換
15.6 効率的な末尾再帰
15.7 遅延評価

第16章 多相型
16.1 パラメトリック多相性
16.2 型推論
16.3 多相変数の表現
16.4 静的多重定義の解決

第17章 データフロー解析
17.1 フロー解析向けの中間表現
17.2 様々なデータフロー解析
17.3 データフロー解析を用いた変換
17.4 データフロー解析の高速化
17.5 別名解析

第18章 ループ最適化
18.1 支配節
18.2 ループ不変計算
18.3 帰納変数
18.4 配列境界検査
18.5 ループ展開

第19章 静的単一代入形式
19.1 SSA形式への変換
19.2 支配木の効率的な計算
19.3 SSAを用いた最適化アルゴリズム
19.4 配列、ポインタ、およびメモリ
19.5 制御依存グラフ
19.6 SSA形式への逆変換
19.7 関数型中間形式

第20章 パイプライニングとスケジュール
20.1 資源束縛のないループスケジューリング
20.2 資源束縛のあるループパイプライニング
20.3 分岐予測

第21章 メモリ階層
21.1 キャッシュの構成
21.2 キャッシュブロック整合
21.3 事前取出し
21.4 ループ交換
21.5 ブロック化
21.6 ごみ集めとメモリ階層

付録A Tiger言語リファレンスマニュアル
A.1 字句について
A.2 宣言
A.3 変数と式
A.4 標準ライブラリ
A.5 Tigerプログラムの例

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2020年11月24日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 018
図2.3 ホワイトスペースのマル5
2019.12.18
1刷 058
11~12行目の「Closure」内
    for すべてのw ∈ FIRST(βz) について until I が変化しなくなる
    for すべてのw ∈ FIRST(βz) について       I ← I ∪ {(X → .r, w)} until I が変化しなくなる

1行を追加します。
2020.11.24
1刷 250
本文9行目
ごみ回収器はオペレーティングシステムにメモりの増量を要求する
ごみ回収器はオペレーティングシステムにメモリの増量を要求する

メモリの「リ」がひらがなのため、訂正いたします。
2010.01.25
1刷 252
「■ フラグメンテーション」4行目、「13.2 参照カウント」4~5行目
「■ フラグメンテーション」4行目 未使用メモりが 「13.2 参照カウント」4~5行目 ガベーコジレクタ
「■ フラグメンテーション」4行目 未使用メモリが 「13.2 参照カウント」4~5行目 ガベージコレクタ

「■ フラグメンテーション」4行目は、メモリの「リ」がひらがなのため、訂正いたします。
2020.11.13
1刷 254
9行目
最終的にプログラムは十分なメモりの割付けを行い、
最終的にプログラムは十分なメモリの割付けを行い、

メモリの「リ」がひらがなのため、訂正いたします。
2020.11.13
1刷 363
「■節点の順序付け」の本文下から3行目
循環グラフであれあ効率的に半トポロジカル整列する。
循環グラフであれば効率的に半トポロジカル整列する。
2020.09.24
1刷 399
上から5~6行目
このようにしてコンパイラは、使用から定義へそして使用から定義へとすばやく参照することができるのだ。
このようにしてコンパイラは、定義から使用へそして使用から定義へとすばやく参照することができるのだ。
2020.09.24
1刷 403
図19.4 (g)変数の名前付替えの図
2020.09.24
1刷 447
「■レジスタ割付けの影響」下から1行目
うまく行くことに期待するのである。
うまくいくことに期待するのである。
2020.10.29
1刷 460
「21.1キャッシュの構成」下から4行目
セット連想キャッシュ(set-associative cache,)であり、
セット連想キャッシュ(set-associative cache)であり、
2020.10.29
1刷 467
図21.5の(a)の説明文
事前取出しなしに動的命令並び替えができるマシン上では、事前取出しなしに動的命令並び替えができるマシン上では、キャッシュミスによる遅延に比例して、
事前取出しなしに動的命令並び替えができるマシン上では、キャッシュミスによる遅延に比例して、
2020.10.29
1刷 468
「■事前取出し命令」上から11~12行目
もちろん計算がメモりを重点的に使う
もちろん計算がメモリを重点的に使う

メモリの「リ」がひらがなのため、訂正いたします。
2020.10.29

感想・レビュー

Q さん

2019-02-20

C言語から関数型言語へのトランスレータを作ろうとしていて、何かヒントがないかと手にとりました。流し読みをしただけですが、豊富な図と数式で解説されていて自然言語での説明より理解しやすい本だと感じました。あまり深く読解していませんが。一方でこの本でも命令型言語や関数型言語をコントロールフローグラフは支配木を使ってアセンブラに近い言語に落していくことが主眼として書かれていて、トランスレータが人間が読解できる出力を得るためには大きなヒントになりませんでした。コンパイラを自作する時になったら再読しようと思います。