1.3 処理プロセス (1)言語解析とプログラム生成/実行 ①プログラムの意味の抽出(プログラムテキストの 解析) ②コンパイラの場合、機械語プログラムの生成 ③インタプリタの場合、プログラムの実行 (2)コンパイラの実行プロセス 原始プログラム 字句/語彙解析 語彙/トークン (source program) (lexical analysis) (vocabulary/token) 構文解析 (syntax analysis) 記号表 意味解析 (symbol table) (semantic analysis) 構文図・ 逆ポーランド表現等 (syntax diagram/ Reverse Polish Notation) コード最適化 (code optimize) 最適化用 テーブル等 (table for optimum) コード生成 目的プログラム (code generation) (object program) コンパイラ実行プロセスの例 (原始プログラム)A1 = B2 + C3 * 27 語彙解析 構文解析 (解析木) A1 = B2 + C3 * 27 または (逆ポーランド記 法) A1 B2 C3 27 * + = (記号表) 記号 型 番地 A1 integer 1000 B2 integer 1002 C3 integer 1004 コード生成 (トーク ン) A1 = B2 + C3 * 27 (目的プログラム) LOD R0,1004 MLI R0,#27 STR R0,$TM001 LOD R0,1002 ADD R0,$TM001 STR R0,1000 (3)中間段階の言語を出力する場合 • 中間段階のプログラムを出力 • 次の段階でさらに詳細なプログラムを出力 ■中間段階のプログラムを中間言語(intermediate language)という。 ■各段階をパス(pass)という。 【用語】 ワンパスコンパイラ(one-pass compiler)1パス 多パスコンパイラ(multi-pass compiler)2~5パス ディスクアクセスは多くなるがコード最適化に適している。 (4)分割コンパイル • 複数のプログラム単位を別々にコンパイル • 複数の目的プログラムを連結 ■連結するプログラムをリンケージエディタ(linkage editor)という。 ■大域的変数のアドレス解決はリンケージエディタ で行う。 【別名】 以下、すべて同じ意味 リンカ(linker),リンケージローダ(linkage loader), リンクエディタ(link editor, linking editor) (5)実行時にアドレス解決を行う • ダイナミックリンクロード(dynamic link load) ■実行時にロードされるライブラリをダイナミックリン クライブラリ(DLL:Dynamic Link Library)という。 (6)オーバレイ構造 • メモリを重複して使用すること。これをオーバレイ (overlay)という。 ■オーバレイする単位をセグメント(segment)という。 ■セグメント構造の指定はリンケージエディタで行 い、アドレス解決はリンケージエディタが行う。
© Copyright 2025 ExpyDoc