猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

コンピュータシステムの理論と実装(第4章〜)

第4章 機械語

Hackコンピュータの仕様

 ノイマン型コンピュータHackの仕様は以下の通り

アドレッシングモード

要求されたメモリのワードに対して、そのアドレスを指定する方法には3種類ある。結局ビット列を「データ」として解釈するか、「アドレス」として解釈するかの違い起因している。

  • イミディエイトアドレッシング方式:オペランドをデータとして解釈する。そのまま直接メモリに格納する。非常に高速。
  • 直接アドレッシング:オペランドをメモリのアドレスとして解釈する。その指定されたアドレスの値をデータと解釈して、直接メモリに格納する。
  • 間接 アドレッシング:オペランドをメモリのアドレスとして解釈する。ここまでは直接アドレッシングと共通だが、その指定されたアドレスの中身をさらにアドレスとして解釈する。その指定されたアドレスの値をデータとして解釈して、メモリに格納する。C言語でいう配列やポインタの取り扱いに相当する。
命令

 アドレス命令(A命令)と計算命令(C命令)からならる。

A命令(16bit)

 0vvv vvvv vvvv vvvv
 Aレジスタに15bitのアドレス空間の値を設定する。

C命令(16bit)

 111a cccc ccdd djjj
 dst=cmp;jmp

「計算内容、計算結果の格納場所、次に実行するプログラム」を指定する。

cmp :命令はすべて算術演算と論理演算
dst:レジスタA,レジスタD,およびM(レジスタAの指定するアドレスのメモリ)の3通り
jmp :ジャンプ先はレジスタAに格納されている命令メモリのアドレスを参照する。ジャンプするかはjjjの3bitの8通りの条件に依存する。