• 検索結果がありません。

第12回

N/A
N/A
Protected

Academic year: 2021

シェア "第12回"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

コンパイラ演習

第 12 回

2007/12/20 小酒井 隆広 前田 俊行 山下 諒蔵 佐藤 春旗 大山 恵弘 佐藤 秀明 住井 英二郎

(2)

今日の内容

„

Garbage Collection (ごみ集め)

„

配列境界検査

(3)

Garbage Collection 概論

„

遠藤敏夫さんの資料を使います

„

遠藤敏夫さん

‰ 東京工業大学大学院 特任准教授

(4)

演習でどの GC を実装するか?

„

たぶん copying GC が一番楽

„

興味があれば mark-sweep GC に

挑戦してみるのもよい

„

コンパイラ側の改造が多いのを

いとわなければ、 reference count も

おもしろい

„

さらに余裕があれば incremental GC、

generational GC も

(5)

GC 導入のための

コンパイラの変更 (1)

„

ヒープを作成する (stub の) コードを改造

‰ Copying GC を採用する場合、ヒープを 2 つ用意 „

ヒープ内にメモリを確保するコードを改造

‰ ヒープポインタとヒープリミットを比較し、ヒープが あふれそうなら GC ルーチンに飛ぶ „

ヒープ内のデータを扱うコードを改造

‰ 配列やタプルなどに型やサイズを表すタグを付加 ‰ 採用する GC によっては、 mark bit 領域や reference count 領域などを追加し、それらを 操作するコードも追加

(6)

GC 導入のための

コンパイラの変更 (2)

„

GC が rootset を得るための機構を追加

‰ スタックに積まれた各ワードの型を GC ルーチンが 知るための機構を導入 „ フレームに保存された PC の値から、そのフレームの 各ワードの型を得られるような表を作る „ スタックに値をプッシュする際に、その値の型の情報も どこかに書き込んでおく „ など ‰ 大域変数のアドレスと型を GC ルーチンが知る ための機構を導入

(7)

配列境界検査

„

GC のための拡張と同様、 配列データに

長さを表すタグを付加

„

配列アクセスを行う命令列の前に、

配列長と添字を比較する命令を出力

1234 567890 2 1234 567890

(8)

共通課題

„

MinCaml に以下の改造を加えよ

‰ 配列長を表すタグを配列に付加する ‰ 配列アクセスの前に境界検査を行い、配列の 範囲外にアクセスしようとしていたら、 プログラムを終了させるなどの処理を行う ‡ 変更したソースファイルを固めて送ってください。 変更していないソースファイルを送る必要は ありません。

(9)

コンパイラ係用選択課題

„

Garbage collection を自作コンパイラまたは

MinCaml に実装せよ

‰ 使用する GC アルゴリズムは自由 ‰ ゴミをたくさん作りながら動くサンプル プログラムを記述し、それが複数回の GC を経て動き続けることを確認すること ‡ コンパイラと GC のソースファイルを固めて 送ってください。

(10)

課題の提出先と締め切り

„

提出先:

[email protected] „

締め切り: 4 週間後 (1/17) の午後 1 時

‰ コンパイラ係用課題の締め切り: 2008年 2月 29日 „

Subject: Report 12 <学籍番号>

‰ 例: Report 12 71099 „

本文にも氏名と学籍番号を明記のこと

半角スペース 1 個ずつ ‹ 質問は [email protected] まで

(11)

コンパイラ係の

成績評価について (1)

„

選択課題を 1 つ以上提出してください

‰ オブジェクト指向、多相型、例外、 パターンマッチ、etc. ‰ これらと同等以上の難度を有する言語機構の 実装をもって選択課題の提出とみなすことも 可能です „ 事前に相談してください

(12)

コンパイラ係の

成績評価について (2)

„

各コンパイラ係に、前田、小酒井が

面談をします

‰ 基本的にはレイトレ競技会の付近の日または当日 ‰ [email protected] にメール して予約をとって下さい ‰ 場所は地下端末室、時間は 20 分程度 ‰ やること: „ 自作コンパイラの特徴や独創的な点などの説明 „ 自作コンパイラによる、プログラム (レイトレ含む) の コンパイル・実行のデモ ‰ 自作コンパイラでコンパイルしたレイトレが自作 CPU またはシミュレータ上で動く様子を見せて下さい

参照

関連したドキュメント

2)海を取り巻く国際社会の動向

[ … ] We need to contextualize the success of happiness of individuals by relating their wellbeing to the harms or benefits they create for others” (Cieslik, 2017, pp... Was

The International Review Committee reviewed the Taiwan government’s State report in 2017 and concluded the following: the government in Taiwan must propose new

This establishment of trust, then strengthened by the positive actions of the Islamic community, has led to increased levels of trust between the two communities since the

町の中心にある「田中 さん家」は、自分の家 のように、料理をした り、畑を作ったり、時 にはのんびり寝てみた

課題曲「 和~未来へ 」と自由曲「 キリクサン 」を披露 しました。曲名の「 キリクサン

(3)使用済自動車又は解体自 動車の解体の方法(指定回収 物品及び鉛蓄電池等の回収 の方法を含む).

自動車環境管理計画書及び地球温暖化対策計 画書の対象事業者に対し、自動車の使用又は