Skip to content

2018年度 情報科学Ⅱで示された「あるプロセッサの命令セット」を実装したエミュレータ

License

Notifications You must be signed in to change notification settings

greenlaver/tinyCPU

Repository files navigation

tinyCPU

2018年度 情報科学Ⅱにおいて提示された「あるプロセッサの命令セット」を実装したエミュレータです。

tinyCPU

⚡ 命令セット

講義資料中の表1.1に示された、以下の命令セットを実装しています。

命令 計算の内容
ADD 2つの数の足し算を行う(演算レジスタ+引数)
SUBTRACT 2つの数の引き算を行う(引数-演算レジスタ)
MULTIPLY 2つの数の掛け算を行う(演算レジスタ*引数)
DIVIDE 2つの数の割り算を行う(演算レジスタ/引数)
LOAD メモリから演算レジスタにデータを読み出す
STORE メモリに演算レジスタのデータを書き込む
JUMP 指定されたメモリ番地にジャンプする
JUMPZERO 演算レジスタの内容が0ならジャンプする
HALT 停止する
PRINT 演算レジスタの内容を印刷する

🔰 使い方

ターミナル上で、

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 [番地] [名前] で、指定番地のメモリ領域に名前を付けられます。


This program written by Aonori
Thanks なぎ@nagin

About

2018年度 情報科学Ⅱで示された「あるプロセッサの命令セット」を実装したエミュレータ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published