1.1 プログラミング言語 (1)プログラミング言語とは

Download Report

Transcript 1.1 プログラミング言語 (1)プログラミング言語とは

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)という。
■セグメント構造の指定はリンケージエディタで行
い、アドレス解決はリンケージエディタが行う。