220 likes | 384 Views
プログラム言語 と 言語プロセッサ. 基本情報技術 概論 II ( 第1回 ). 埼玉大学 理工学研究科 堀山 貴史. プログラミング 言語 ( プログラム言語 ). コンピュータの 構成 ( 前期の復習 ). CPU. 主記憶 (main memory, メモリ ) に、 プログラム と データを置く. 制御装置. 演算装置. 入力装置. 主記憶装置. 出力装置. 補助記憶 装置. 機械語 と アセンブリ 言語. ________________. ロード 命令. Reg. D.
E N D
プログラム言語と 言語プロセッサ 基本情報技術概論 II (第1回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータの構成 (前期の復習) CPU • 主記憶 (main memory, メモリ) に、 プログラム と データを置く 制御装置 演算装置 入力装置 主記憶装置 出力装置 補助記憶装置
機械語 と アセンブリ言語 ________________ ロード命令 Reg.D Reg.A ________________ 1対1対応 • 機械語 (マシン語) • 0,1 で作った命令 (CPU が解釈/実行) 例) 0 1 0 1 0 1 1 1 • CPU の種類ごとに、機械語の構成は異なる • アセンブリ言語 (アセンブラ言語) • 機械語の命令に名前をつけて、分かり易くしたもの 例) LD D, A
低レベル言語 と 高級言語 ________________ • 低レベル言語… 機械語、アセンブリ言語 • 計算機アーキテクチャに依存 → 別の計算機にプログラムを移植するのが困難 • 高級言語 (高レベル言語) • 基本的に、計算機アーキテクチャに依存しない … コンパイラ等が、機械語に変換 (翻訳) してくれる • Fortran … 科学技術計算用 • COBOL… 事務処理用 (銀行など) • C… UNIX 開発時に設計された言語 • C++ … Cに、オブジェクト指向の概念を取り入れる • Java … オブジェクト指向言語アプレットは、どの計算機でも実行できる
プログラミング言語 (まとめ) • 汎用プログラミング言語 • 低レベル言語 • 機械語 (マシン語) … 0, 1で作った命令 (CPUが解釈/実行) • アセンブリ言語 … 機械語の命令に名前をつけて分かり易くしたもの (機械語と1対1対応) • 高級言語 (高レベル言語) … 計算機アーキテクチャに依存しない • C、Fortran 等 (手続き型言語) …処理手順を順番に書いた手続きを 単位としてプログラムを作る • C++、Java等 (オブジェクト指向言語) …オブジェクトを単位として プログラムを作る • LISP(関数型言語)、Prolog(論理型言語) • スクリプト言語 • Perl、Ruby、Postscript など データと、それに対する操作(メソッド) → 「オブジェクト指向設計」
Java バイトコード JavaVM • Sun Microsystems が開発したオブジェクト指向プログラミング言語 • JavaVM(Java 仮想マシン) と バイトコード(中間言語) • バイトコード (JavaVM 用のコード) にコンパイル • JavaVM を用意すれば、任意の環境で同じバイトコードを実行できる ⇔ 既存言語: 実行環境ごとに、コンパイル • Java アプレット と Java サーブレット • アプレット: webブラウザを使ってクライアント側で実行 • サーブレット: webサーバ側で実行結果をクライアントに送る
言語プロセッサ • コンピュータは機械語(0,1の並び)しか実行できない • 他の言語で書かれたプログラムは? 言語プロセッサが、ソースプログラムを、機械語で書かれたオブジェクトプログラムに変換 • アセンブラ… アセンブリ言語を機械語に1対1対応 • コンパイラ… 高級言語を機械語に変換 • インタプリタ… コンパイルせずに、 実行時に命令を1つずつ順番に解釈 ________________ ・ 会話的実行に優れる・ 実行速度は遅い (Perl、Ruby、Basic など)
プログラム開発手順 ソースプログラム エディタ ・ライブラリなど外部関数は、 アドレス解決ができない・未解決アドレスとして処理 言語プロセッサ(コンパイラ等) オブジェクトプログラム ・オブジェクト プログラムとライブラリを結合・未解決アドレスを解決・ロードモジュールは、再配置可能 リンカ ロードモジュール ローダ ・ロード モジュールを主記憶に読み込み、実行 主記憶装置 デバッガ
________________ コンパイラ関連キーワード: 最適化コンパイラ 例) ループに無関係な処理をループ外に ソース プログラム オブジェクト プログラム for ( i = 0; i < 10; ++i ) { x = y * z; a[i] += x; } x = y * z; for ( i = 0; i < 10; ++i ) {a[i] += x; } ループに無関係な処理の実行回数が減る 実行速度を速くするため、等価なプログラムで、より処理効率の良いものに変換してコンパイルする(実行結果は、最適化前と同じ)
コンパイラ関連キーワード: 最適化コンパイラ ※テキスト p.236 に他の最適化の例 例) ループ アンローリング (ループ展開) ソース プログラム オブジェクト プログラム sum = 0; for ( i = 0; i < 10; ++i ) { sum += a[i]; } sum = 0; sum += a[0]; sum += a[1]; … sum += a[9]; ループ変数 iの更新 / ループ終了判定のコストが減る 実行速度を速くするため、等価なプログラムで、より処理効率の良いものに変換してコンパイルする(実行結果は、最適化前と同じ)
________________ コンパイラ関連キーワード: プリコンパイラ ソースプログラム コンパイラの理解できるソースプログラム オブジェクトプログラム プリコンパイラ コンパイラ コンパイル前に、疑似命令を、コンパイル可能な命令に書き換える 例) C ソース中の #include や #define などを展開
________________ コンパイラ関連キーワード: クロス コンパイラ ソースプログラム オブジェクトプログラム ロードモジュール クロス コンパイラ 実行環境と別の環境でコンパイルするために使う 例) 携帯アプリを、windows マシン上で開発
________________ コンパイラ関連キーワード: コンパイラ コンパイラ コンパイラのソースプログラム コンパイラ コンパイラコンパイラ コンパイラ も ロードモジュール (実行ファイル)では、誰が、コンパイルしたの ? コンパイラ コンパイラ(簡単な文法の言語のコンパイラ) を作る これを使って、高機能なコンパイラをコンパイルする
デバッグ手法 • メモリ ダンプ • メモリの内容全体を、出力 • スナップ ショット • 指定した命令を実行するごとに、指定した変数/レジスタ/メモリ内容を出力 • インスペクタ • オブジェクトのデータ構造や変数の値を視覚的に表示するツール (実行状況の確認が容易) • トレーサ • 命令の実行順序や実行結果など、実行の履歴を表示するツール
ROMプログラムを読み、CPU や周辺チップの動作を再現していく キーワード • エミュレータ • ハードウェアの動作を、仕組みレベルから再現する 例) バーチャル コンソール(Wii)/ PS2エミュレータ (PS3) • シミュレータ • 対象をモデル化し、現象レベルで動作を模倣する 例) 地球シミュレータ • コンバータ • ソース プログラムを、別言語のプログラムに変換する • ジェネレータ • 必要な条件をパラメータ指定すると、プログラムを自動的に生成する
参考:コンパイラの処理順序と構文解析 字句解析 = sum + 構文解析 a 10 意味解析 最適化 コード生成 • 字句 (トークン) ごとに分ける 例) sum = a + 10 ; • 文法に合致するように、字句の列から構文木を作る • 構文の意味を調べ、整合性を確認 例) データ型の確認など • 実行速度を速くするため、処理効率の良いものに等価変換 • 機械語のコードを生成する
この文面は、TOKYO TECH OCW の利用条件を参考にしました この教材のご利用について • この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を求めることなく、無償で自由にご利用いただけます。講義、自主学習はもちろん、翻訳、改変、再配布等を含めて自由にご利用ください。 • 非商業利用に限定 • この教材は、翻訳や改変等を加えたものも含めて、著作権者の許諾を受けずに商業目的で利用することは、許可されていません。 • 著作権の帰属 • この教材および教材中の図の著作権は、次ページ以降に示す著作者に帰属します。この教材、または翻訳や改変等を加えたものを公開される場合には、「本教材 (or 本資料) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に実施してください。なお、この教材に改変等を加えたものの著作権は、次ページ以降に示す著作者および改変等を加えた方に帰属します。 • 同一条件での頒布・再頒布 • この教材、または翻訳や改変等を加えたものを頒布・再頒布する場合には、頒布・再頒布の形態を問わず、このページの利用条件に準拠して無償で自由に利用できるようにしてください。
この教材のご利用について • 配布場所 • http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/ • この powerpointファイルの著作者 • 堀山 貴史 2007-2009 horiyama@al.ics.saitama-u.ac.jp • 改変等を加えられた場合は、お名前等を追加してください • 図の著作者 • p. 3, 4, 7, 10 • ハードディスク : 堀山 貴史 • CPU, メモリ, キーボード : http://webweb.s92.xrea.com/ • パソコン, ディスプレイ, プリンタ, マウス :Microsoft Office Online / クリップアート • p. 11 ~ 16 • クリップアート : Microsoft Office Online / クリップアート • その他 : 堀山 貴史