このプロジェクトは、CPUとメモリで構成されるシンプルなコンピューターシステムをシミュレートします。 CPUとメモリは、通信する個別のプロセスによってシミュレートされます。メモリには、CPUが実行する1つのプログラムが含まれており、シミュレーションが終了します。
CPUの場合:
メモリの場合:
タイマーの場合:
割り込み処理用:
指示セット:
- > 1 =ロード値#値をACにロードする
- > 2 =ロードaddr#アドレスの値をACにロードします
- > 3 = loadind addr#指定されたアドレスにあるアドレスから値をACにロードします。 (たとえば、Loadind 500と500に100が含まれている場合、100からロードします)。
- > 4 = loadidxx addr#acに値をACにロードします。 (たとえば、LoadIDXX 500、Xに10が含まれている場合、510からロードします)。
- > 5 = loadidxy addr#at(address+y)に値をACにロードします
- > 6 = loadspx#of(sp+x)からacに負荷をかけます(spが990、xは991から荷重が1の場合)。
- > 7 = addr#AC内の値をアドレスに保存する
- > 8 = get#は1から100までのランダムなintをACに取得します
- > 9 =ポート#をput port = 1に、ACをintとして画面に書き込みます。 port = 2の場合、ACを画面にcharとして書き込みます
- > 10 = addx#xの値をACに追加
- > 11 = addy#yの値をACに追加します
- > 12 = subx#acからxの値を減算します
- > 13 = suby#ACからyの値を減算します
- > 14 = copytox#acの値をxにコピーします
- > 15 = copyfromx#xの値をACにコピーします
- > 16 = copytoy#acからyへの値をコピーします
- > 17 = copyFromy#yの値をACにコピーします
- > 18 = copytosp#acの値をSPにコピーします
- > 19 = copyfromsp#spの値をACにコピーします
- > 20 =ジャンプaddr#アドレスへのジャンプ
- > 21 = Jumpifequal addr#ACの値がゼロの場合にのみアドレスにジャンプします
- > 22 = jumpifnotequal addr#ACの値がゼロでない場合にのみアドレスにジャンプします
- > 23 = call addr#アドレスをスタックにプッシュし、アドレスにジャンプします
- > 24 = ret#スタックからのポップ返信アドレス、アドレスにジャンプします
- > 25 = incx#xの値を増やす
- > 26 = decx#xの値を減少させます
- > 27 =プッシュ#ACをスタックに押します
- > 28 =ポップ#スタックからACにポップ
- > 29 = int#システムコールを実行します
- > 30 = IRET#システムコールから戻ります
- > 50 = end#end execution
======================================================================================================
サンプルフォルダーには5つのサンプルファイルが含まれています。
sample1.txt
Sample2.txt
sample3.txt
サンプル4.txt
sample5.txt
======================================================================================================
プロジェクトをコンパイルして実行するためのステップ: