コンパイラ 2012年10月1日 酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/COMP/2012/index.html.

Slides:



Advertisements
Similar presentations
1 プログラム言語 と 言語プロセッ サ 基本情報技術概論 II ( 第1回 ) 埼玉大学 理工学研究科 堀山 貴史.
Advertisements

オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
情報処理Ⅱ 第1回 2006年10月6日(金).
アルゴリズムとデータ構造1 2009年6月8日
「コンピュータと情報システム」 03章 ソフトウェア
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
コンピュータプラクティス I 再現性 水野嘉明
コンピュータ概論B ー ソフトウェアを中心に ー #12 コンパイラとインタプリタ
2014年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
2015年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
東京工科大学 コンピュータサイエンス学部 亀田弘之
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第2回 UNIX・Linuxの基礎 担当:青木義満
コンパイラ 2011年10月17日
Java I 第2回 (4/18)
プログラミング入門 (教科書1~3章) 2005/04/14(Thu.).
2013年度 プログラミングⅡ ~ Cプログラミングやってみよう ~.
FORTRAN 科学技術計算用 数値演算精度を重視したシステム K=0 DO 10 I=0,N,1 K=K+I 10 CONTINUE
LMNtalからC言語への変換の設計と実装
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
オブジェクト指向言語論 知能情報学部 新田直也.
An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl
情報処理Ⅱ 2005年10月7日(金).
プログラミングとは Q.プログラムとは何か? A.コンピュータを制御するための,コンピュータに対する命令(指示)の集まり.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
情報工学科 3年生対象 専門科目 システムプログラミング 第2回 UNIX・Linuxの基礎(1) 担当:青木義満.
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
情報科学1(G1) 2016年度.
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
心理学情報処理法Ⅰ コンピュータ言語の歴史.
プログラムはなぜ動くのか.
プログラミング言語論 プログラミング言語論 ガイダンス 水野 嘉明 ガイダンス 1 1.
コンパイラ 2012年10月15日
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
専門教科「情報」 アルゴリズム 第1回 ガイダンス.
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
FlexとBison+アルファ -実習編-
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
東京工科大学 コンピュータサイエンス学部 亀田弘之
パソコンのしくみ ハードウェア OS(Operating System) アプリケーション NEC DOS
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
アルゴリズムとデータ構造1 2005年6月10日
プログラム言語 プログラム言語の体系を学ぶ.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
東京工科大学 コンピュータサイエンス学部 亀田弘之
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンパイラ 2011年10月20日
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語 1.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
第6回放送授業.
ネットワーク・プログラミング Linuxシステムとソフトウェア開発.
コンパイラ 2012年10月11日
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
1.2 言語処理の諸観点 (1)言語処理の利用分野
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Presentation transcript:

コンパイラ 2012年10月1日 酒居敬一@A468(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/COMP/2012/index.html

テキスト 参考書 『コンパイラとバーチャルマシン』 今城哲二,布広永示,岩澤京子,千葉雄司 共著 オーム社 『コンパイラ』 今城哲二,布広永示,岩澤京子,千葉雄司 共著 オーム社 参考書 『コンパイラの構造と最適化』 中田育男 著(朝倉書店) 『コンパイラ』 中井央 著(コロナ社) 『プログラミング言語C』 B.W.カーニハン,D.M.リッチー 著,石田晴久 訳(共立出版).

講義計画 コンパイラの概要 (10月1日2時限) コンパイラの構成 (10月4日2時限) コンパイラの概要 (10月1日2時限) コンパイラの構成 (10月4日2時限) プログラミング言語の形式的な記述 (10月11日2時限) 字句解析 (10月15日2時限) 構文解析1 (10月18日2時限) 構文解析2 (10月22日2時限) 中間表現 (10月25日2時限) 意味解析 (10月29日2時限) コード生成 (11月1日2時限) コード最適化 (11月5日2時限) 例外処理 (11月8日2時限) コンパイラと実行環境の連携1 (11月12日2時限) コンパイラと実行環境の連携2 (11月15日2時限) 動的コンパイラ (11月19日2時限) [クォータ末試験] (未定11月22日?)

成績評価 クオータ末試験および演習を総合的に評価する. 試験や演習で持ち込めるもの 教科書・ノート・配布資料 再試験はしない.

本講義の位置づけ プログラムの勉強(技術的な知識) アルゴリズムとデータ構造(抽象的な知識) 計算機のしくみの勉強(低水準の知識) 計算機言語、情報学群実験1 背景は、表現方法としてのプログラミング言語 アルゴリズムとデータ構造(抽象的な知識) 計算機システムの基礎 数学と計算法(計算機はΣや∫を知らない) 計算機のしくみの勉強(低水準の知識) 情報学群実験2 コーディング対象を知る システム設計の勉強(高水準の知識) オペレーティングシステム コンパイラ

コンパイラ コンパイラは、ソースファイルをオブジェクトファイルに 翻訳する。 その過程で言語仕様に合わない記述があれば、エラー。 目的 プログラム 目的 コンパイラ エラーメッセージ ソースリスト 実行中の プログラム プログラム ファイル コンパイラは、ソースファイルをオブジェクトファイルに 翻訳する。 その過程で言語仕様に合わない記述があれば、エラー。

さまざまなプログラム ソースプログラム(Source Program) オブジェクトプログラム(Object Program) 人間が読み書き可能な、人工言語で書いたプログラム。 オブジェクトプログラム(Object Program) ソースプログラムを機械語に翻訳したプログラム。 ただし、そのままでは実行できない。 実行プログラム(Executable Program) 実行時ライブラリなどと結合し計算機で実行できるプログラム。 これらは通常、ファイルに格納しておく。 それぞれに読み書きするプログラムが存在する。 エディタ、コンパイラ、リンケージエディタ、OS、デバッガ

・・・ ・・・ 言語処理系の構成 実行時 ライブラリ ソース プログラム 目的 コンパイラ 動的 リンカ 実行 プログラム エディタ リンケージ エディタ OSの上で 実行 デバッガ ソース プログラム 目的 コンパイラ

クロスコンパイラ 多くのコンパイラではコンパイラが動作する計算機と、 実行プログラムが動作する計算機は同じ。 しかし、そうでない場合もある。 多くのコンパイラではコンパイラが動作する計算機と、 実行プログラムが動作する計算機は同じ。 しかし、そうでない場合もある。 学群実験2で演習したはず。覚えてますか? ソース プログラム 目的 プログラム C コンパイラ マイコンで 実行 開発用PC 組み込みマイコン

プリプロセッサ 高水準言語記述のファイルを入力し、高水準言語の ファイルを出力するプログラムをトランスレータと呼ぶ。 高水準言語記述のファイルを入力し、高水準言語の ファイルを出力するプログラムをトランスレータと呼ぶ。 PascalからC、FORTRANからCへの変換系がある。 コンパイラの前段階で特別に変換するものを、 プリプロセッサと呼ぶ。 C++ソース プログラム Cソース 目的 C++プリ プロセッサ C コンパイラ

インタプリタ 解釈と実行を行うプログラムをインタプリタと呼んでいる。 翻訳するプログラムはコンパイラ。 ソース プログラム インタプリタ コンパイラ部        インタプリタ部 中間語 (メモリ上) ソース プログラム 中間語 インタプリタ コンパイラ

コンパイラとインタプリタの比較 実行速度はざっと一桁くらい、コンパイルして得た プログラムのほうが速い。 実行速度はざっと一桁くらい、コンパイルして得た プログラムのほうが速い。 コンパイラは「解釈」がいらない水準まで「翻訳」する。 翻訳には時間がかかる。 プロセッサで即実行できるので実行は速い。 OSは実行可能形式ファイルをメモリにロードするだけ。 解釈と実行はプロセッサというハードウェアが行っている。 インタープリタは「翻訳」する場合もある。 プロセッサで即実行できないので、「解釈」に時間がかかる。 OSは解釈実行プログラム(インタプリタ)をメモリにロードする。 解釈と実行をインタプリタというソフトウェアが行っている。 ここまでは、現在でも生きているけど、古い話。

インタプリタの例 数値計算 (計算機の前で電卓たたいてませんか?) 雑多な処理 プログラミング言語 bc 雑多な処理 bash, perl, awk, sed ruby, python プログラミング言語 (かつての)BASIC scheme 再利用することはないプログラムは、インタプリタ言語で 書いて、使って、捨てる。 一桁も二桁も遅くてもいい。仕事するのは機械だから。

・・・ 仮想計算機とJava バイトコードが中間語、Java VMがインタープリタ、 というように見える。 実際は、解釈をプロセッサに任せるべく、 実行時に機械語へコンパイルしている。 2ページ前に「古い」と書いた理由。 Java プログラム バイトコード コンパイラ ・・・ Java VM OS B 計算機B OS A 計算機A OS C 計算機C