Immediate Values【Turing Complete編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Immediate Valuesステージ
Immediate Valuesステージのゴールは、Immediateモードの処理を回路に組み込むことです。
Instructionビット列が「00 xxxxxxb」のように上位2桁が00なら、Immediateモードとして処理します。
Immediateモードでは、「xxx xxxxb」(0から63までの数値)をREG 0にセーブします。
※アセンブリ言語を学んだことがあるならピンとくるかもしれませんが、Instructionビット列の下6桁が即値になります。即値(イミディエイト)とは、CPUに与える命令のうち、数値が直接記述されている部分あるいはその値のことです。
Immediate Valuesステージを解く
1:Immediateモードを認識する仕組みを追加する
Instructionビット列からImmediateモードを識別させるには、DECコンポーネントの役目です。
Instructionビット列の上位2桁が00b
⇒Immediateモード
⇒DECコンポーネントの0番ピン(0番スタート)がONになる
⇒Immediateモード時には、Instructionビット列をレジスターREG 0に記憶する
⇒Instructionビット列はプログラムメモリーから送られてくるので、それを取得してREG 0のSave valueピンから入力します。ただし、Immediateモード時にのみ送られるように、途中に8 Bit Switchコンポーネントを配置して、その制御はDECコンポーネントの0番ピンからくる信号とします。
上記の内容を実装すると次の回路になります。
2:REG 0の有効を制御する
まだ完成していません。Immediateモード時にREG 0をセーブ状態にしなければなりません。
REG 0はCopyモードとImmediateモードのどちらでもセーブ状態として使えるように、DECコンポーネントから伸びるモードを示すワイヤー(信号線)をORゲートを通したうえで、REG 0のSaveピンにつなげます。
3:全体を見直す
以上で回路を組み込み終えたので、全体が見えるようにしてください。
・DECコンポーネント・・・4つの出力ピンのうち3つの接続が完了。Immediateモード、Calculationモード、Copyモードに対応済み。
・REG共通・・・Copyモードで使う。
・REG 0・・・Immediateモードでの即値の記憶先。
・REG 1~3:Calculationモードで使う。
4:テストする
回路が完成したら、テストしてください。
いよいよ次がCPU ARCHITECTUREの最終ステージになります。