2009-01-03
■ 家でゆっくり
家でゆっくり過ごす. ここのところ,(疲労の割に)あまり睡眠時間がとれてなかったので,昼寝も.
■ 作業再開
コンパイラ作りという作業がまだ残っている. (それにレポート執筆も…っ!!) みなさ〜ん,早めに取り組んだ方が絶対いいですよ〜.
■ 現状の確認
現在のコード数は2160行だが,総機能に対して,7割くらい実装できていると思っている. 見通しをすっきりさせるため,簡単に今の状況を確認しておこう.
上の画像は,今の開発環境. ファイルが無闇に多く,フォルダ整理したいところだが, 今回はしない方向で.
タスク管理機能も使うようになった. ただ,序盤ではタスクが多すぎて使いにくいと思うので, 今の段階からでの使用で適正だったと思う.
以前の日記でも述べたとおりに大体は開発が進んでいる. rev145からrev236まで進んでいる. 最初はjavadocの追加・不要関数の廃棄・肥大化したファイルの分割など,ソースの整理. コピペミスでバグが混入したが,SVNのおかげですぐに原因究明でき,解決.
rev161あたりから,コード生成するためのコード生成(ヤヤコシイな(^_^;))に入り, まずはデータ構造を固める. 使い勝手のよい,tmpfile()を使い,構造体も少々いじる. そこからは,コード生成関数gen_○○をつくり, 適切な場所で,適切なパラメータで呼ぶようにした. また,最適化も視野に入れ,同時並行的に目的ファイルを生成しないようにする. ここで,tmpfile()の威力が発揮された.
あとは,ひたすら,CASLの仕様に従ったコード生成ルーチンを書く. 有る程度進んできたので,あと「正月休み」に入るので, eclipseのタスク管理機能*1を使い,残りタスクを明確化した.
というわけで,今までの開発の流れをざっと追ってきた.
*1 「//TODO 〜」とソースに書くだけでよい
■ 今後の課題
残るタスクは15. 開発時間は,概算で235分. (単体テスト時間を含む)
タスク | ソース | 開発時間(概算) |
gen_code_CPYSF , gen_code_CPYZFを見て立っていたらコード生成 | gen_code.c | 20分 |
仮パラメータ領域宣言ファイルを連結する | gen_code.c | 10分 |
手続きファイルに対して,グローバル変数の変位を追記する | gen_code.c | 20分 |
手続きファイルも,最終物へ連結する | gen_code.c | 10分 |
if文のコード生成 | s_CompoundStatement.c | 20分 |
while文のコード生成 | s_CompoundStatement.c | 15分 |
手続き呼び出し文のコード生成 | s_CompoundStatement.c | 30分 |
代入文のコード生成(少し出来ているが) | s_CompoundStatement.c | 15分 |
入出力文のコード生成 | s_CompoundStatement.c | 30分 |
各手続きにグローバル変数の増分情報を書いていく | s_Program.c | - |
ローカル変数の領域を宣言する | s_sc_Block.c | 10分 |
仮パラメータ領域宣言ファイルに対して領域宣言(DS)する | s_sc_Block.c | 15分 |
使用したグローバル変数の変位を(DC)する | s_sc_Block.c | 15分 |
使用した仮パラメータの変位を(DC)する | s_sc_Block.c | 15分 |
GR3に対する符号の処理 | s_sc_Expression.c | 10分 |
合計 | 235分 |
甘めの見積もりだが,確実に明日中には終わるだろう. 単体テストは確実に行いたいね〜. 結合テストでは手間がかかるし.
結合テストは2時間もあれば終わるだろう. レポート執筆は6時間くらいかな. なんとか,8日には間に合いそうだ.