2018年度 情報科学Ⅱにおいて提示された「あるプロセッサの命令セット」を実装したエミュレータです。
講義資料中の表1.1に示された、以下の命令セットを実装しています。
命令 | 計算の内容 |
---|---|
ADD | 2つの数の足し算を行う(演算レジスタ+引数) |
SUBTRACT | 2つの数の引き算を行う(引数-演算レジスタ) |
MULTIPLY | 2つの数の掛け算を行う(演算レジスタ*引数) |
DIVIDE | 2つの数の割り算を行う(演算レジスタ/引数) |
LOAD | メモリから演算レジスタにデータを読み出す |
STORE | メモリに演算レジスタのデータを書き込む |
JUMP | 指定されたメモリ番地にジャンプする |
JUMPZERO | 演算レジスタの内容が0ならジャンプする |
HALT | 停止する |
演算レジスタの内容を印刷する |
ターミナル上で、
cd && git clone https://github.com/greenlaver/tinyCPU.git && \
cd ~/tinyCPU && make
とすれば、エミュレータ本体のプログラムtinyCPU
が生成されます。
同梱しているアセンブリ言語が記述されたASM
ファイルを実行する場合、
./tinyCPU ASM
とすれば
$ ./tinyCPU ASM
[PRINT] : 10300.000000
[PRINT] : 10609.000000
[PRINT] : 10927.270000
...
[PRINT] : 186588.660003
[PRINT] : 192186.319803
[HALT]
のように実行結果が得られます。
プログラムの動きを確認することに適したモード。PCやレジスタなどを監視できます。
72x30以上のウィンドウサイズで起動することを推奨します。
同梱されているアセンブリ言語ファイルASM
をデバッグモードで動かす場合
./tinyCPU -d ASM
で起動した後
> label 12 X
> label 15 Y
> break 7
> run
と打てば、以降Enterを押すごとに順次実行されます。
1行ずつ確認したくなったら > n
でステップ実行しましょう。
デバッグモード最下部のプロンプトへ以下のコマンドを入力できます。
Enterキーを押すと直近のコマンドを繰り返すことが可能です。
> next
または > n
で、アセンブリプログラムを1行ごとに実行できます。
> break [番地]
または > b [番地]
で、指定番地にブレークポイントを設定します。
> run
または > r
で、次のブレークポイントまで継続実行します。
ブレークポイントが設定されていなければ、HALT
命令に到達するまで継続実行します。
> label [番地] [名前]
または > l [番地] [名前]
で、指定番地のメモリ領域に名前を付けられます。