[16 bit Free CPU のトップページ||シミュレーション, 論理合成環境のページ]
シミュレーション環境のディレクトリ( 配布ファイルの sim/ 以下 ) のうち, c/ のディレクトリはアドレス空間変換のための C プログラムが置かれます. このディレクトリにはファイルがたくさんあるように見えますが, 理解する必要があるのは次のものだけです.
アドレス空間変換のプログラムをコンパイルするには, map_data 関数を応募者の アーキテクチャにあわせて記述する必要があります. map_data 関数の役割は標準アドレス空間とビット位置の組を, SFL のメモリのメモリユニット番号とそのメモリユニットのアドレスの組に 変換するというものです. 具体的には map_data 関数のプロトタイプは次のように定義されています.
Sfl_mem map_data ( long adr, int bit_no ) ;
第 1 引数の adr は標準アドレス空間でのアドレスが整数で渡されます. 第 2 引数の bit_no はそのアドレスにおけるワードのビット位置が渡されます. この 2 つの値をもとに, map_data 関数は Sfl_mem 構造体を返します. Sfl_mem 構造体は次のように定義されています.
typedef struct sfl_mem {
int unit_no;
long adr;
} Sfl_mem ;
unit_no は メモリユニット番号を表し, memmod.sfl の中の munit0 - munit31 にそれぞれ対応します. また, adr はそれぞれのメモリユニットにおけるアドレスを表します. この構造体をもとにアドレス変換を行い, SECONDS のスクリプトを出力します.
map_data 関数が記述できたら, プログラムをコンパイルします. コンパイルの手順は,
./configure
make
です. なお, コンパイル手順には GNU の make が必要です. これによって dataread というプログラムができます. なお, このプログラムでは 1 行あたりの扱える文字数がデフォルトでは 512 文字 までに制限されています. もしこれ以上の文字数が 1 行に含まれるファイルを扱う場合は, configure に '--with-maxchar=2048' というオプションをつけて実行し, make しなおすと 制限を変更できます.
[16 bit Free CPU のトップページ||シミュレーション, 論理合成環境のページ]