Plasmin
コンピュータの動作をシミュレートするためのツールです.
動作中の『箱』の中身を可視化します.
用意された命令セットは単純・簡単なものばかりです.
できることは限られますが,コンピュータの動作の本質を理解するのに役立ちます.
このツールを利用して,プログラミングの基本的な概念である「データの参照と代入」「命令の組み合わせによる複雑な処理の実現」を学習します.
命令セット
[R0][R1]には,それぞれA~Eのレジスタを指定可能
- レジスタにデータを代入する
- LDR [R0] [V]
- レジスタ(R0)に値(V)を代入する
- CPR [R0] [R1]
- レジスタ(R0)にレジスタ(R1)の値を代入(コピー)する
- レジスタの値を使って計算する
- INC [R0]
- レジスタ(R0)の値を1増やす
- DEC [R0]
- レジスタ(R0)の値を1減らす
- 条件によって次に実行する命令を変える
- JEQ [R0] [R1] [V]
- レジスタ(R0)の値とレジスタ(R1)の値が等しければ次に実行する命令をV番目の命令にする
- JLT [R0] [R1] [V]
- レジスタ(R0)の値がレジスタ(R1)の値より小さければ次に実行する命令をV番目の命令にする
- JMP [V]
- 無条件に次に実行する命令をV番目の命令にする
- その他
- END
- 処理を終了する
命令セット(メモリ)
[M0][M1]には,それぞれp~tのレジスタを指定可能
- レジスタにデータを代入する
- CPR [M0] [M1]
- レジスタ(M0)にレジスタ(M1)の値を代入(コピー)する
- レジスタの値を使って計算する
- INC [M0]
- レジスタ(M0)の値を1増やす
- DEC [M0]
- レジスタ(M0)の値を1減らす
- 条件によって次に実行する命令を変える
- JEQ [M0] [M1] [V]
- レジスタ(M0)の値とレジスタ(M1)の値が等しければ次に実行する命令をV番目の命令にする
- メモリ領域を確保する・開放する
- ALM [M0] [R1]
- レジスタ(R1)の大きさだけ領域を確保し先頭の番地をレジスタ(M0)に格納する
- FRM [M0]
- レジスタ(M0)の番地を先頭とする領域を開放する
- メモリの値を入出力する
- LRM [R0] [M1]
- レジスタ(R0)にレジスタ(M1)の番地の値を代入する
- STM [M0] [R1]
- レジスタ(M0)の番地にレジスタ(R1)の値を格納する
- その他
- RND [M0] [R1]
- レジスタ[M0]からレジスタ[R1]の個数分の乱数(>0)を代入する