進捗など

  • MinCamlソースは大体理解した(一応私はコンパイラ担当).MinCamlのソースを見ながら単純なMinCamlプログラムを手でSPARCアセンブリに落とせるようになった*1.ASTの型付けを破壊的にやってるので少々読むのに苦労した(抽象的な型付け規則はかなり単純だが).しかし未だにアセンブリコード生成部は理解がちょっと怪しい,というのも私はasmプログラミングの経験がほとんどないので.id:nucくんからCから呼べるPowerPC asmのサンプル(理情2年冬学期の課題)をもらったので,しばらくasmプログラミングをやってみることにする.
  • H研内に我々用のノートPCを置いていただいて,それを使ってFPGA*2コンフィギュレーションをすることになった.これからちょくちょくH研にお邪魔することになる.まだSRAM, DRAMの使い方とか通信方法は何も分からない.
  • アーキテクチャはとりあえずMIPSのコピーで行くことになった.ただし細部は何も決めていない.というか我々3年生3人にはまだ細部を決められるほど知識と技能がない.
  • とりあえず私はシミュレータ(つーかエミュレータ)をJava*3書き始めることにした.MinCamlのおかげでコンパイラ係は初めのうちは楽をできる*4,というかやることがない.私が命令セット・アーキテクチャに習熟するためにも,また3年生2人がstored-program方式計算機を理解する手がかりとしても*5,よい選択だと自分では思っている.とりあえず動くものができればアーキテクチャ設計の細部も固まって行くだろう.
  • 独自のアーキテクチャエミュレータをすばやくでっち上げて(褒め言葉)MinCaml側もそれに対応したアセンブリを吐けるようになった班もあるそうだ.やはりISerとは勝負にならないと改めて実感.他の班も色々話し合いつつ細部を詰め始めているようだ.やはり厳しい.

*1:何も考えずに等価なアセンブリ・プログラミングをするというのではなくて,MinCamlの動きのトレースという意味.

*2:XilinxのProでないVirtex II, XC2V1000 (100万ゲート).

*3:GCがあってプログラムがある程度高速に動いて班員誰もが読めてWindows, Linux両方で処理系が簡単に動く言語.ちくしょう(何

*4:最初から自分で再実装とか夢広がりんぐな話はしばらく置いておく.

*5:ISerと比べると2人とも(というか私もだが)ソフトウェアの経験に偏っているので.