サイトメニューここからこのページの先頭です

ショートカットキーの説明を開始します。画面遷移や機能実行は、説明にあるショートカットキーを同時に押した後、Enterキーを押してください。ショートカットキーの説明を聞くには、Alt+0。トップ画面の表示には、Alt+1。ログインを行うには、Alt+2。簡易検索画面の表示には、Alt+3。詳細検索画面の表示には、Alt+4。障害者向け資料検索画面の表示には、Alt+5。検索結果の並び替えを行うには、Alt+6。国立国会図書館ホームページの表示には、Alt+7。検索結果の絞り込みを行うには、Alt+8。以上でショートカットキーの説明を終わります。

ナビゲーションここから

ナビゲーションここまで

本文ここから

資料種別 図書

コンパイラの構成と最適化

中田育男 著

詳細情報

タイトル コンパイラの構成と最適化
著者 中田育男 著
著者標目 中田, 育男, 1935-
出版地(国名コード) JP
出版地東京
出版社朝倉書店
出版年月日等 1999.9
大きさ、容量等 521p ; 22cm
注記 文献あり
ISBN 4254121393
価格 9500円
JP番号 20001399
出版年(W3CDTF) 1999
件名(キーワード) コンパイラ
Ajax-loader 関連キーワードを取得中..
NDLC M159
NDC(9版) 007.64 : 情報科学
対象利用者 一般
資料の種別 図書
言語(ISO639-2形式) jpn : 日本語

目次
 

  • コンパイラの構成と最適化
  • 目次
  • 第1部 コンパイラの概要
  • 1. はじめに 2
  • 1.1 コンパイラとは 2
  • 1.2 変換系と通訳系 4
  • 2. コンパイラの簡単な例 7
  • 2.1 後置記法 7
  • 2.2 スタック 9
  • 2.3 簡単なコンパイラの例 14
  • 2.4 コンパイラの論理的構造 17
  • 2.5 コンパイラの物理的構造 20
  • 第2部 コンパイラの構成
  • 3. 文法と言語 26
  • 3.1 バッカス記法 26
  • 3.2 構文図式 28
  • 3.3 文法と言語の形式的定義 30
  • 3.4 解析木 32
  • 3.5 あいまいな文法 33
  • 4. 字句解析 36
  • 4.1 文字読取り 36
  • 4.2 字句読取り 38
  • 4.3 正規表現と有限オートマトン 46
  • 4.3.1 正規表現 46
  • 4.3.2 正規表現から非決定性有限オートマトンへ 47
  • 4.3.3 非決定性有限オートマトンから決定性有限オートマトンへ 50
  • 4.3.4 有限オートマトンの状態数の最小化 52
  • 4.3.5 字句解析器生成系 54
  • 4.4 字句読取りプログラムの例 55
  • 4.4.1 浮動小数点定数の読取り 55
  • 4.4.2 コメントの読取り 62
  • 4.4.3 最長一致と最短一致 64
  • 5. 構文解析 68
  • 5.1 構文解析手法の簡単な歴史 68
  • 5.2 下向き構文解析法 70
  • 5.2.1 下向き構文解析法とその問題点 70
  • 5.2.2 LL(1)文法 74
  • 5.2.3 再帰的下向き構文解析プログラム 78
  • 5.2.4 文法から再帰的下向き構文解析プログラムヘ 81
  • 5.2.5 非再帰的下向き構文解析法 84
  • 5.2.6 あいまいな文法の扱い 86
  • 5.3 LR構文解析法 89
  • 5.3.1 上向き構文解析法 89
  • 5.3.2 LR構文解析の概略 90
  • 5.3.3 SLR(1)構文解析 94
  • 5.3.4 LR(1)構文解析 97
  • 5.3.5 LALR(1)構文解析 100
  • 5.3.6 あいまいな文法の扱い 102
  • 5.3.7 正規右辺文法のLR構文解析 103
  • 5.4 演算子順位構文解析法 104
  • 5.4.1 演算子順位文法 104
  • 5.4.2 演算子順位行列による構文解析 105
  • 5.4.3 演算子順位関数 109
  • 5.5 構文解析法の選択 113
  • 5.6 構文解析器生成系 115
  • 6. 意味解析 117
  • 6.1 意味解析とは 117
  • 6.2 記号表 118
  • 6.2.1 記号表の情報 118
  • 6.2.2 記号表の探索 119
  • 6.2.3 ブロック構造と記号表 123
  • 6.3 属性文法 126
  • 6.3.1 属性文法の簡単な例 126
  • 6.3.2 属性文法の定義 130
  • 6.3.3 属性評価器 134
  • 6.3.4 1パス型属性文法 137
  • 6.3.5 属性文法の拡張と応用 144
  • 7. 誤りの処理 148
  • 7.1 誤りの発見 148
  • 7.1.1 構文上の誤り 148
  • 7.1.2 意味上の誤り 149
  • 7.2 誤りの情報の出力 150
  • 7.3 誤りの修復 152
  • 7.4 正常処理への復帰 155
  • 8. 実行時記憶域と仮想マシン 162
  • 8.1 実行時記憶域 162
  • 8.1.1 基本データ型の表現 162
  • 8.1.2 配列型と構造体型の表現 163
  • 8.1.3 クラスの表現 165
  • 8.1.4 手続きの使う記憶域 174
  • 8.2 仮想マシンと通訳系 178
  • 8.2.1 仮想マシンとは 178
  • 8.2.2 仮想マシンの命令 179
  • 8.2.3 仮想マシン語への変換 188
  • 8.2.4 仮想マシンの実現(通訳系) 188
  • 9. 目的コードの生成 191
  • 9.1 中間語と機械語 191
  • 9.2 式のコード生成 195
  • 9.2.1 オペランド参照のコード 196
  • 9.2.2 算術式のコード 197
  • 9.3 文のコード生成 204
  • 9.3.1 分岐文のコード 205
  • 9.3.2 手続き呼出しのコード 209
  • 9.3.3 例外処理のコード 211
  • 9.4 コード生成器生成系 212
  • 9.4.1 木のパターンマッチングによるコード生成 213
  • 9.4.2 構文解析法によるパターンマッチングでのコード生成 216
  • 9.4.3 ダイナミックプログラミングによるコード生成 219
  • 9.5 実行時コード生成 221
  • 9.5.1 動的コード生成 222
  • 9.5.2 JITコンパイラ 224
  • 第3部 目的コードの最適化
  • 10. 最適化とは 228
  • 10.1 最適化の例(行列の掛け算の例) 230
  • 10.1.1 配列要素の配置と番地計算 230
  • 10.1.2 最適化の例1(スカラ計算機の場合) 231
  • 10.1.3 最適化の例2(アクセス効率とループ変換) 235
  • 10.1.4 最適化の例3(ベクトル計算機の場合) 236
  • 10.1.5 最適化の例4(並列計算機の場合) 237
  • 11. 最適化の方法 240
  • 11.1 命令の実行回数を減らす 241
  • 11.1.1 共通部分式の削除 241
  • 11.1.2 定数の畳み込み 242
  • 11.1.3 命令のループの外への移動 242
  • 11.1.4 部分冗長性の除去 243
  • 11.1.5 ループの変換 244
  • 11.1.6 式の性質の利用 246
  • 11.1.7 無用命令の削除 247
  • 11.1.8 複写の削除 247
  • 11.1.9 手続き呼出しの特殊化 248
  • 11.1.10 オブジェクトのインライン割当て 249
  • 11.1.11 判定の置換え 250
  • 11.1.12 のぞき穴式最適化 251
  • 11.2 より速い命令の利用 251
  • 11.2.1 レジスタ割付け 251
  • 11.2.2 特殊な命令の利用 252
  • 11.2.3 メモリアクセス順序の最適化(メモリ階層の有効利用) 253
  • 11.2.4 演算の強さの軽減 254
  • 11.3 並列度を上げる 255
  • 11.3.1 命令レベル並列実行 255
  • 11.3.2 データ並列実行 257
  • 11.4 最適化の方法の適用順序 266
  • 12. 最適化のアルゴリズム 268
  • 12.1 制御フローグラフ 268
  • 12.2 データの流れの解析 270
  • 12.2.1 共通部分式の削除(基本ブロックと拡張基本ブロック内) 270
  • 12.2.2 変数の使用に対応する定義の解析 274
  • 12.2.3 データの流れの等式の一般形 278
  • 12.2.4 共通部分式の削除(大域的) 279
  • 12.2.5 ループ 281
  • 12.2.6 ループの外への移動 284
  • 12.2.7 変数の生と死の解析 287
  • 12.2.8 無用命令の削除 287
  • 12.2.9 定数伝播と畳み込み 288
  • 12.2.10 部分冗長性の除去 288
  • 12.2.11 手続き間解析 299
  • 12.2.12 ポインタ解析 308
  • 12.2.13 最適化の各操作の適用順序 316
  • 12.3 静的単一代入形式(SSA形式) 320
  • 12.3.1 SSA形式の求め方 322
  • 12.3.2 制御依存グラフとプログラム依存グラフ 333
  • 12.3.3 無用命令の削除 336
  • 12.3.4 共通部分式の削除 337
  • 12.3.5 ループの外への移動 344
  • 12.3.6 帰納変数 344
  • 12.3.7 演算の強さの軽減と判定の置換え 346
  • 12.3.8 定数伝播 349
  • 12.3.9 部分冗長性の除去 354
  • 12.3.10 ポインタ解析 355
  • 12.4 命令スケジューリング(並列実行) 358
  • 12.4.1 基本ブロック内の命令スケジューリング 359
  • 12.4.2 基本ブロックにまたがった命令スケジューリング 362
  • 12.4.3 ソフトウェアパイプライニング 367
  • 12.4.4 条件文がある場合のソフトウェアパイプライニング 373
  • 12.4.5 整数線形計画法によるソフトウェアパイプライニング 380
  • 12.5 レジスタ割付け 382
  • 12.5.1 簡単な割付け法 383
  • 12.5.2 生存区間を使ったレジスタ割付け 384
  • 12.5.3 生存区間の干渉グラフを使ったレジスタ割付け 396
  • 12.5.4 整数線形計画法によるレジスタ割付け 408
  • 12.6 配列要素の依存解析 409
  • 12.6.1 データの依存関係 412
  • 12.6.2 1重ループ内の依存関係とベクトル化 414
  • 12.6.3 多重ループにおける依存関係 421
  • 12.6.4 データ依存関係の解析法 424
  • 12.7 ループ変換 435
  • 12.7.1 ループ分配 436
  • 12.7.2 ループ融合 438
  • 12.7.3 ループ交換 439
  • 12.7.4 ループ逆転 443
  • 12.7.5 ループ傾斜 444
  • 12.7.6 波頭変換 447
  • 12.7.7 ループ細分 449
  • 12.7.8 ループタイル化 450
  • 12.7.9 ループ展開 453
  • 12.7.10 ループ合体 454
  • 12.7.11 ループつぶし 455
  • 12.7.12 ループ皮むき 455
  • 12.7.13 ループ変換の適用順序 456
  • 12.8 データ分散と通信 457
  • 12.8.1 各プロセッサでの私物化 4580
  • 12.8.2 配列分散の解析 459
  • 12.8.3 計算分散の解析 461
  • 12.8.4 通信の解析 462
  • 12.8.5 通信の最適化 467
  • 12.8.6 データ分散の自動化 472
  • 12.8.7 配列へのアクセスが規則的でない場合 480
  • 参考文献 483
  • あとがき 505
  • 索引 513

本文ここまで

Copyright © 2012 National Diet Library. All Rights Reserved.

フッター ここまで