情報科学演習III小林研究室課題6

Proof Carrying Code (PCC) または Typed-Assebly Language (TAL) の設計

基本的な PCC や TAL のアイデアについては別項に譲るとして、ここでは課題の説明をします。
課題は、大まかに言って、次の2つ(余力があれば3つ)になります。
  1. 参考文献を読んで PCC や TAL がどういうものか理解する。参考文献は下を見てください。これらを全部読まなければいけないわけではありません。
  2. 適当な assembly 言語を選んで PCC または TAL を設計する。適当な、と書きましたが、おすすめは3年の演習で作った or 作っている :-) CPU の命令セットです。命令セットの大きさも適当ですし、命令セットを勉強する手間も省けます。
  3. 実装 (PCC の proof checker、または TAL の typechecker) する。これができれば、自分達の作った/ているコンパイラの出しているコードが自分の設計した PCC/TAL の安全性の基準(例: calling convention, memory usage, termination ) を満たしているか確かめることができます。ひいてはコンパイラのバグなんかも見つけられるかもしれません。(もう見つけたくないかもしれませんが)

参考文献

  1. George C. Necula, Peter Lee. Safe Kernel Extensions Without Run-Time Checking. OSDI'96,October 1996.
  2. George C. Necula, Peter Lee. Proof-Carrying Code. POPL'97, January 1997.
  3. Greg Morrisett, David Walker, Karl Crary, and Neal Glew. From System F to Typed Assembly Language, POPL'98, January 1998.
  4. Greg Morrisett, Karl Crary, Neal Glew, and David Walker. Stack-Based Typed Assembly Language, TIC'98, May 1998.

参考URL (論文もいくつかは download できます)



課題一覧へ
igarashi@is.s.u-tokyo.ac.jp