2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎

Slides:



Advertisements
Similar presentations
コンパイラ演習 第 6 回 2005/11/17 大山 恵弘 佐藤 秀明. 今回の内容 実マシンコード生成 – アセンブリ生成 (emit.ml) – スタブ、ライブラリとのリンク 末尾呼び出し最適化 – 関数呼び出しからの効率的なリターン (emit.ml) –[ 参考 ]CPS 変換 種々の簡単な拡張.
Advertisements

コンパイラ演習 第 6 回 (2011/11/17) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴 潮田 資秀 小酒井 隆広 山下 諒蔵 佐藤 春旗 大山 恵弘 佐藤 秀明 住井 英二郎.
コンパイラ演習 第 12 回 (2012/01/05) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴 潮田 資秀 小酒井 隆広 山下 諒蔵 佐藤 春旗 大山 恵弘 佐藤 秀明 住井 英二郎.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
9.Garbage Collection for C
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第5回 関数(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
2006/11/9 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
ヒープソートの演習 第13回.
関数(1) 第11回 [6月29日、H.16(‘04)] 今日のメニュー 1 前回の課題 2 前回の宿題 3 いろいろな関数の演習 4 課題
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ML 演習 第 1 回 佐藤 春旗, 山下 諒蔵, 前田 俊行 May 30, 2006.
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
計算機リテラシーM 第2回 メール 伊藤 高廣.
2006/10/5 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
全体ミーティング (4/25) 村田雅之.
2006/11/30 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
コンパイラ演習番外編 (その2): JVM コンテスト
コンパイラ演習番外編 (その1): min-rt 改 コンテスト
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング基礎I(再) 山元進.
2006/10/12 山下 諒蔵 佐藤 春旗 前田俊行 大山 恵弘 佐藤 秀明 住井 英二郎
IT入門B2 (木曜日1限) 第一回 講義概要 2004年月9日30日.
2012年度 計算機システム演習 第4回 白幡 晃一.
全体ミーティング (6/13) 村田雅之.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
コンパイラ演習 第 9 回 (2011/12/08) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴
App. A アセンブラ、リンカ、 SPIMシミュレータ
コンパイラ演習 第12回 2006/1/26 大山 恵弘 佐藤 秀明.
2006/12/7 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
情報科学1(G1) 2016年度.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
2006/11/02 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
2006/11/16 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
コンパイラ演習 第 4 回 (2011/10/27) 中村 晃一 野瀬 貴史 前田 俊行 秋山 茂樹 池尻 拓朗 鈴木 友博 渡邊 裕貴
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
TAL : Typed Assembly Language について
型付きアセンブリ言語を用いた安全なカーネル拡張
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
コンパイラ 2012年11月15日
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
デジタル画像とC言語.
コンパイラ演習 第11回 2006/1/19 大山 恵弘 佐藤 秀明.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
アスペクト指向言語のための 独立性の高いパッケージシステム
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
コンピュータアーキテクチャ 第 2 回.
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
2008/7/16(情報コース)2008/7/22(通信コース) 住井
コンピュータアーキテクチャ 第 5 回.
言語プロセッサ 第12日目 平成20年1月9日.
高度プログラミング演習 (11).
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
曖昧なポインタの存在下での Copying Garbage Collection
X64 函数呼び出し規約 長谷川啓
コンパイラ 第12回 実行時環境 ― 変数と関数 ― 38号館4階N-411 内線5459
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎 コンパイラ演習 第 12 回 2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎

今日の内容 Garbage Collection (ごみ集め) 配列境界検査

Garbage Collection 概論 遠藤敏夫さんの資料を使います 遠藤敏夫さん 東京工業大学松岡研究室特任講師 http://matsu-www.is.titech.ac.jp/~endo/

演習でどの GC を実装するか? たぶん copying GC が一番楽 興味があれば mark-sweep GC に 挑戦してみるのも良い コンパイラ側の改造が多いのをいとわなければ reference count もおもしろい さらに余裕があれば incremental GC、generational GC も

GC 導入のための コンパイラの変更 (1) ヒープ確保コードを改造 ヒープからのメモリ確保コードを改造 Copying GC を採用する場合、ヒープを2つ準備 ヒープからのメモリ確保コードを改造 ヒープポインタとヒープリミットを比較、ヒープがあふれそうなら GC ルーチンに飛ぶ ヒープ上データの作成・アクセスコードを改造 配列やタプルなどのヒープ上データに、 型やサイズを示すタグを付加 採用する GC に従い、 mark bit 領域や reference count 領域などを追加。 それらを操作するコードも追加

GC導入のための コンパイラの変更 (2) GC が rootset を得るための処理を追加 フレームに保存された PC の値から、 そのフレームの各ワードの型を得るための表を作る, or スタックに値をプッシュする際に、 その値の型の情報もどこかに書き込む など 大域変数のアドレスと型を GC ルーチンが知るための機構を導入 レジスタの値を GC ルーチンの前で退避、 GC ルーチンの後で回復

配列境界検査 GC のための拡張と同様に、 データ構造にタグを付加 配列アクセスを行う命令列の前に、 配列長と添字を比較する命令を出力 3 配列アクセスを行う命令列の前に、 配列長と添字を比較する命令を出力 3 23 23 859 859 1110 1110

共通課題 MinCaml コンパイラに以下の改造を加えよ 配列長を示すタグを配列に付加する 配列アクセスの前に、配列範囲検査を行う。 配列範囲外にアクセスしようとしていたら、 プログラムを終了させるなどの処理を行う 変更したソースファイルを固めて送ってください。変更していないソースファイルを 送る必要はありません。

コンパイラ係用選択課題 Garbage Collection を自作コンパイラまたは MinCaml に実装せよ 使用する GC アルゴリズムは自由 ごみをたくさん作りながら動く サンプルプログラムを記述し、 それが複数回の GC を経て 動き続けることを確認すること コンパイラと GC のソースファイルを 固めて送ってください。

課題の提出先と締め切り 提出先: compiler-enshu@yl.is.s.u-tokyo.ac.jp 共通課題の締め切り: 2007年2月1日の午後 1 時 コンパイラ係用課題の締め切り: 2007年2月28日 Subject: Report 12 <学籍番号> <アカウント> 本文にも氏名と学籍番号を明記のこと

コンパイラ係の成績評価に ついて (1) 選択課題を一つ以上提出して下さい オブジェクト指向、多相型、例外、 パターンマッチ、etc これらと同等以上の難度を有する言語機構 の実装をもって選択課題の提出 とみなすことは可能です

コンパイラ係の成績評価に ついて (2) 自作コンパイラの特徴・独創的な点などの説明 各コンパイラ係を 前田、佐藤、山下が面談をします 基本的にはレイトレ競技会の付近の日または当日 compiler-query@…にメールして予約をとって下さい 場所は地下端末室、時間は 20 分程度 やること: 自作コンパイラの特徴・独創的な点などの説明 自作コンパイラによる、プログラム(レイトレ含む)のコンパイル・実行のデモ 自作コンパイラでコンパイルしたレイトレが自作 CPU またはシミュレータ上で動く様子を見せて下さい