2005-12-13 (火)
*コンパイラ
朝からコンパイラの演習.というか,デザインプロジェクトCのためのコンパイラを書いてみる.コンパイラの授業の演習中に全く関係ないコンパイラ書いてるのもどうかと思いますが.先生が作った簡易アセンブラを弄って使う班が殆どだろうから,コンパイラから書いてるとこは他に無いだろう….
とりあえず,C言語もどきのソースをコンパイルできるように.型が8ビットのintしかなかったり,ifとforとgotoくらいしか使えなかったりしますが….関数呼び出しとかも実装したけど,まだCPUの方にcallやretが実装されて無いので意味が無い.
というか,1Kワードしか無いプログラムメモリをどうやって使うか….他には画像用のVRAMしかメモリが取れないので,スタックもプログラム領域に積んでます.課題とは関係ないところで凝ったものを作るのって楽しいですね.
自分でCPUを作って画像処理させたり出来るって凄い時代ですね.
サンプルで配布されたVHDLのソースを眺めてて凄いことに気付く.…レジスタ同士のコピー命令が無いよ(駄目じゃん).ldrでコピーできると思ったら,レジスタ0に対してのみコピーだった.自分でmov命令あたりを実装するしかないな.VRAMへのアクセスも同じ命令にしてしまった方が良いかな.