読むだけでいい基本情報技術者試験対策7:命令の実行過程その2

前回は命令文がCPUとメインメモリの間でどのように行き来するかを学びました。名レジスタは命令部とアドレス部に分割されそれぞれの場所で処理されます。

このとき、アドレス部は、命令部が演算装置に行わせる演算に必要なデータを引き渡す手助けをします。すなわち、データのありかを演算装置に教えてあげるわけですね。

ですので、もっと平たく言えばアドレス部の役割は演算装置にデータを渡してあげることなのです。この「データの渡し方」というのは様々なやり方があります

この際、アドレスを特定のところ、あるいは特定のところから一定値感覚をあけたアドレスなど、アドレスに様々な変更を加えることがあります。このことをアドレス指定、あるいはアドレス修飾といいます。このアドレス修飾のやり方をいくつか紹介していきます。

 

まず、直接アドレス指定です。これは命令のアドレス部を実行アドレスとする方式です。つまり一番スタンダードなやり方ですね。

 

次に、即値アドレス指定です。命令レジスタは命令部とアドレス部の2つに別れていますが、このうちアドレス部に、命令の実行に必要なデータが直接入っているという方式です。この場合、メインメモリのアドレスを参照することはありませんよね。何故なら、アドレスが入ってるはずの箱にデータが入っているのですから。

 

次は間接アドレス指定です。これは命令のアドレス部に「実行アドレスが入っているアドレス」を格納する方式です。演算装置的には、「お、データのアドレスはここAだな。データはAに入っているんだろ、多分。→ん、データがないぞ。でもなんかここAにもアドレスが入ってるぞ、データはどこなんだろ。とりまこのアドレスBに飛んでみるか。→ここBにデータあるんかーい。」という感じでしょうか。たらい回しをイメージしてください。

 

次に、相対アドレス指定です。自己相対アドレス指定とも言います。アドレス部にはある値が格納されています。これを仮に5としましょう。そして、別なところに命令アドレスレジスタ(プログラムカウンタ)があります。こちらには10という数字が格納されています。この方式では両者の数値を足し合わせたアドレスを実行アドレスとします。つまりアドレス15ですね。これが実行アドレスです。ここに実行に必要なデータが入っています。5でも10でもなく15です。この指定方式で来るとこのような処理を経ます。

 

次に、インデックスアドレス方式(指標アドレス指定)ベースアドレス指定(基底アドレス指定)を一気にいきます。これらの指定方式は相対アドレス指定とほぼ同じです。ただ、足し合わせる数値がインデックスレジスタ(指標レジスタ)かベースレジスタ(基底レジスタ)かという違いだけです。

 

今回はここまでです。これで命令の実行過程は終了です。次回からはCPUをどうやって高速化するかという話をしていきます。