ジャンプ命令の拡張の説明を読み、演習問題のアセンブラプログラムを2つ作成しました。

久しぶりにやると、値そのものを操作しているのか、ポインタを操作しているのかすぐ混乱してしまいます。しばらく考えていると調子が戻ってくるのですが。

もう1月も終わりですね。時間が経つのは早いなあ。

昨日はV7リターンずの日。ところが飲み会のせいで間に合わず。Recordedを見ればいいやと思っていましたが現時点で無いと言うことは録画されなかった??

これは痛い。ついてないなあ。。

slideshareデータがあるのは救いですが、せっかくなので話を聞きたかったです。残念!!

「作りながら学ぶコンピュータアーキテクチャ」で設計しているCPUは本の中でPOCOと命名されています。これからしばらくPOCOの言語処理系を作ってみようと思います。

アセンブラがないと始まらないのでアセンブラの仕様から考えてみます。

アセンブルの前処理としては、includeとifdef-else-endif、名前を定義するequもしくはdefine。バイナリに変換されない処理としてはlabelのアドレス解決とcomment処理。そして命令のバイナリ変換です。

Verilogシミュレータはバイナリ変換されたROMデータを外部ファイルから読み込んで使います。FPGAボード上で実際に動作させる時はROMデータのVerilogコードを生成すれば良いと考えています。つまり入力からROMアドレスを与えられると固定のデータを出力から出すVerilogのソースコードでありCPUのVerilogソースコードと一緒にコンパイルされます。

ROMデータの他にアセンブラソースとROMデータの両方を載せたリストファイルも必要です。こう考えるとアセンブラだけでも結構やることが一杯ありますね。

アセンブラができたらマクロ位は作りたいな。Cライクの高級言語にもチャレンジしたいですが、CPUにあまり機能がないので作っても使わないかな。どこまでやるかはまだ分かりませんが色々と遊べそうです。楽しみ!