人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

global navigation menu page top

機械語のアドレス指定方式【基本情報技術者になろう!】

f:id:hiro-htm877:20190619230445j:plain



 

f:id:hiro-htm877:20190601202549p:plain

 

 

 

  

 

 

現在、私は秋の基本情報技術者試験に向けて勉強中です。

その中で、私が得た知識をまとめて記事にしています。

 

本記事のテーマ

基本情報技術者になろう!】

機械語のアドレス指定方式の解説

アドレス指定方式とは

計算によって求めた主記憶装置上のアドレスを実行アドレス(もしくは有効アドレス)と呼びます。

コンピュータに指示を与えるには、コンピュータの理解できる言語つまり、機械語で命令しなければなりません。また、命令は「何を(オペランド部)どうしろ(命令部)」 という記述になっています。この何をの部分には「メモリのアドレス」や「メモリのアドレスが格納されているメモリのアドレス」が入っている場合など様々な種類があります。このように、なんらかの計算によってアドレスを求める方式を、アドレス修飾(もしくはアドレス指定)と呼びます。具体的にどんな方式があるのかを紹介していきます。

即値アドレス指定方式

オペランド部に、対象となるデータそのものが入っている方式を即値アドレス指定方式と呼びます。

f:id:hiro-htm877:20190708202234p:plain

直接アドレス方式

オペランド部に記載してあるアドレスが、そのまま実行アドレスとして使える方式を直接アドレス指定方式と呼びます。

f:id:hiro-htm877:20190708202638p:plain

間接アドレス方式

間接アドレス指定方式では、オペランド部に記載してあるアドレスのなかに、「対象となるデータが入っている箇所を示すメモリアドレス」が記されています。間接的に指定しているわけです。

f:id:hiro-htm877:20190708205734p:plain

オペランド部の指し示す先には、「対象となるデータが入っている箇所を示すメモリアドレス」が記されていますので、オペランド部が示すアドレスの中身を見ると、データが実際に入っている場所、つまり実効アドレスを得ることができます。

そして、実効アドレスを参照するとデータが得られるのです。

f:id:hiro-htm877:20190708210040p:plain

f:id:hiro-htm877:20190708210210p:plain

インデックス(指標)アドレス指定方式

インデックス(指標)アドレス指定方式では、オペランド部の値に、インデックス(指標)レジスタの値を加算することで実効アドレスを求めます。

f:id:hiro-htm877:20190708212415p:plain

インデックスレジスタというのは何かというと、連続したアドレスを扱う時に用いるレジスタです。配列型のデータ処理などで使います。

f:id:hiro-htm877:20190708212433p:plain



オペランド部に含まれているインデックスレジスタ番号は、インデックスレジスタ内のどの値を使用するかを示しています。

インデックスレジスタの値とオペランド部の値を合わせることで、実効アドレスが決まります。

f:id:hiro-htm877:20190708212633p:plain

ベースアドレス指定方式

ベースアドレス指定方式では、オペランド部の値に、ベースレジスタの値を加算することで実効アドレスを求めます。 

f:id:hiro-htm877:20190708212919p:plain

ベースレジスタというのは、プログラムがメモリ上にロードされた時の、先頭アドレスを記憶しているレジスタです。つまりベースアドレス指定方式というのは、プログラム先頭アドレスからの差分をオペランド部で指定する方式なわけです。

f:id:hiro-htm877:20190708213917p:plain

こうすると、メモリ上のどこにプログラムがロードされても、命令を変えなくて済むのです!

相対アドレス指定方式

相対アドレス指定方式では、オペランド部の値に、プログラムカウンタの値を加算することで実効アドレスを求めます。

f:id:hiro-htm877:20190708214105p:plain

プログラムカウンタに入っているのは、次に実行される命令へのメモリアドレスです。

つまり相対アドレス指定方式は、メモリ上にロードされたプログラムの中の、命令位置を基準として、そこからの差分をオペランド部で指定する方式なのです。

f:id:hiro-htm877:20190708215147p:plain

 ベースアドレス方式と似ていますが、ベースアドレスを持たないCPUがどこにロードされても大丈夫なアドレス指定を行いたい時に用いられます。

 

 

以上で機械語のアドレス指定方式の説明を終了します。

今回も覚える用語がいっぱい出てきましたが、内容自体はすごく簡単なことなので、実際に頭の中でアドレス指定を描きながら用語と紐づけていきましょう!
 

参考資料

・キタミ式イラストIT塾 基本情報技術者 平成31/01年