Next: , Previous: Top, Up: Top


1 SimpleProcessorとは

SimpleProcessorは,単純なRISCプロセッサのシミュレータである. 四則演算や論理演算,メモリアクセス命令をもつ. また内部にスタックを持ちpop/push命令を使用できる.

1.1 概要

SimpleProcessorは,

を実装するクラスである.

1.1.1 レジスタ構成

SimpleProcessorは,16bit幅のレジスタを32個持っている.レジスタの構成は,次の通り.

r0〜r28
汎用レジスタ
r29
内部のスタックのアドレスを保持するスタックポインタ
r30
LDA,STA命令の基点となるアドレスを保持するフレームポインタ
r31
プログラムカウンタ

レジスタは,全てユーザプログラムから自由に操作することができる.

1.1.2 基本動作

1.2 設定ファイル

SimpleProcessorには,プログラム用の内部メモリの大きさおよび,接続するChannelを設定することができる. 最も簡単なSimpleProcessorの構成は次のようになる.

     
     <element id="proc0" class="net.wasamon.mics.SimpleProcessor" memory="2048"/>
     

他のデバイスと接続するためのチャネルは,そのアクセスするメモリ番地のoffsetを指定して設定することができる.たとえばChannel,bus0とbus1に2048ずつオフセットをずらして接続する場合には,次のような設定になる.

     
     <element id="proc0" class="net.wasamon.mics.SimpleProcessor" memory="2048">
       <channel id="bus0" offset="2048"/>
       <channel id="bus1" offset="4096"/>
     

ここで,Channelは接続先のDataBufferの大きさについての保証をしない.つまり,bus0の先に接続しているDataBufferの大きさが,2048に満たない,たとえば1024で場合,SimpleProcessorから,3072から4095番地にアクセスした場合,それは不正なメモリアクセエス例外を発生する.また逆にbus0の先のDataBufferのサイズが2048を越える場合,bus1へのアクセスエリアとの重なりが生じる.この場合,SimpleProcessorでは,より大きいoffsetで指定した方,つまりbus1へのアクセスとする.