MySOC USBHostとLCD制御を組込( 3)
        SPUアッセンブラの設計

 SPU81用のアッセンブラをVisualBasic6 で作りました。
 SPU81アッセンブラプログラムを開いてから実行すると、プログラムを開いた同じフォルダーにSpu81Soft.mifファイルを作成するもので、機械命令に対応するアッセンブル命令とORG擬似命令だけの単純なものです。メモリアドレス指定に、ラベルが使えます。

 バグ出しが出来て無く、動いた程度の物なのでデバッグしながら使います。
 特に、FPGAのSPU81に組み込みは未だです。
 以下の内容を整理した物をここに置きます。
 SPU81アッセンブラプログラムのソースをプロジェクトごとここに置きます。
 SPU81アッセンブラプログラムの実行ファイルをここに置きます。

●SPU81アッセンブラプログラムの実行によるファイルの流れ

 SPU81アッセンブラプログラムの実行によるファイルの流れの概要です。
 左上は、アッセンブルフォルダのファイルリストの内容です。
・右下のアッセンブラパネルで「SampleAsmProg3.txt」を指定してアッセンブルを実行すると、
 左上のアッセンブルフォルダファイルリストの最下部に示す「Spu81Soft.mif」ファイルが
 作成できます。
・Spu81Soft.mifファイルは、先頭に共通情報、そしてアドレスと機械語データ、
 最下部に 終了コードの構成です。























































●アッセンブラパネルとファイルメニューの内容と操作

 アッセンブラパネルとファイルメニューとアッセンブルメニューの画像を次にしめします。
 アッセンブラパネルは、上部にメニューバー、左部にプログラムソース、
右部にアッセンブル中間内容を表示します。
 ファイルのメニューには、「開く」、「保存」、「終了」が有ります。
・「開く」を選択すると、「ファイルを開く」ダイヤログが出ますので開くファイルを
 指定してください。
・「保存」を選択すると、「名前を付けて保存」ダイヤログが出ますのでファイルを指定して
保存して下さい。アッセンブルのメニューには、「実行」が有ります。
・「実行」を選択すると、プログラムソースを基にアッセンブルを実行します。右部にアッセンブル中間内容を表示します。



●アッセンブル言語でプログラム

 単純なアッセンブル言語でプログラムで説明します。上の右部のアッセンブル中間内容も参照して下さい。簡単ですが、これをアッセンブラの説明とします。
・1行目:コメント:";"以下行末までをコメントとします。アッセンブル中間内容に示すように
 無視します。
・3行目:ラベルと命令:行頭から記述された先頭が英字又は"_"で始まる半角文字列はラベルに
 なります。ラベルは、8文字以内です。アッセンブル中間内容のラベル欄に入ります。
 命令は、ラベルの後のスペース又はTabで区切って記述します。
・4行目:命令:行頭にスペース又はTabを一つ以上入れて命令を記述します。
・5行目:ORG擬似命令:命令と同様に記述します。ORG擬似命令は、プログラムの先頭アドレスを
 指定します。アッセンブル中間内容の様に、次の命令はORG擬似命令が指定するアドレスに
 割り付けられます。
・10行目:命令でラベルを使用:ラベルを使用した命令は、アッセンブル中間内容のOplB欄の
 様に一旦ラベルでアッセンブルした後で、実アドレスに変換します。



●SPU81アッセンブラのプログラムの概要

 SPU81アッセンブラのプログラムの概要を次にしめします。
 アッセンブラプログラムは、3つのモジュールで構成します。
・「Form1」は、フォームをロードした場合やメニューの項目を選択した場合に呼び出され、
 対応した処理をします。
  アッセンブルのメニューの「実行」を選択すると、AsseGo_Click()が呼び出され、
 一連のアッセンブル処理を行います。
・「Module1」は、AsseGo_Click()から呼び出され、1パス目の1行のデータを
 アッセンブルします。
・「Module2」は、AsseGo_Click()から呼び出され、2パス目のアッセンブルで、ラベルを
 アドレスに変換して機械語に挿入する処理をします。







ホームへ戻る