• 締切済み

メモリアドレスレジスタについて。

メモリアドレスレジスタの説明について、テキストには、「命令が処理対象とするアドレス(実効アドレス)は、メモリアドレスレジスタで計算される。」とありますが、全く分かりません。 噛み砕いて教えて頂けないでしょうか?

みんなの回答

  • fjnobu
  • ベストアンサー率21% (491/2332)
回答No.3

日本文で読むと、意味不明で日本語訳では不明確な文章が良く出てきます。原文を読むとハッキリすることが多いですね。

  • mink6137
  • ベストアンサー率23% (595/2500)
回答No.2

>「命令が処理対象とするアドレス(実効アドレス)は、メモリアドレスレジスタで計算される。」 なんとも不可解な説明ですね。 そもそもレジスタはデータを保存するだけで計算する機能はありません。 従って、 メモリアドレスレジスタで計算される。 を メモリアドレスレジスタに格納されている。 と読み替えればいいでしょう。

回答No.1

レジスタにも、計算用(アキュームレーター)と、 アドレッシング用(つまりアドレス)用がありますが、 命令が~とあるので、フェッチサイクルとして、回答します。 0000: 命令 0001: 命令 0002: 例えば「4番地に飛べという命令」 0003: 命令 0004: 命令 アドレスレジスタが、0002にいるとき、フェッチサイクルで、 「4番地に飛べという命令」という命令をアドレスレジスタを通じて読み出し、 「エグゼキューションサイクル」でアドレスレジスタに0004を代入します。 もし、ジャンプ命令=別の番地に飛べ!ではない計算命令なら それを実行して、次の番地へ移動します。 これはアドレスレジスタに+1することを意味しています。 また、命令の長さが、RISCでは固定ですが。 IntelなどのCISCなどの、不定長命令セットの場合は、 命令が「3バイト」なら、次の命令は、+3番地と、 命令により長さが違うので、加算される値も違うという具合です。 備考、C言語では、アドレスを格納している変数をポインタと呼んでいます。

関連するQ&A