知識ベース

インデックス登録

コンピュータのCPUのインデックスレジスタは、プログラムの実行中にオペランドアドレスを変更するために、通常はベクトル/配列操作を行うために使用されるプロセッサレジスタです。

インデックスレジスタの内容は、 即時アドレス(命令自体の一部であるアドレス)に追加(場合によっては減算)され、実際のデータ(オペランド)の「有効な」アドレスを形成します。通常、インデックスレジスタをテストするための特別な命令が用意されており、テストが失敗した場合は、インデックスレジスタを即時定数でインクリメントし、通常ループの開始点まで分岐します。一部の命令セットでは、複数のインデックスレジスタを使用できます。その場合、追加の命令フィールドで使用するインデックスレジスタを指定します。通常、命令で複数のインデックスレジスタを指定できるプロセッサはコンテンツを一緒に追加しますが、IBMにはコンテンツがまとめられたコンピューターのラインがありました。

間接アドレシングの形式を持たない初期のコンピューターでは、命令操作を変更してアレイ操作を実行する必要がありましたが、これにはいくつかの追加プログラムステップが必要であり、コンピューターメモリが多く使用されていました。これは、初期のコンピューターインストール(および20年後の初期のマイクロコンピューター)。

歴史

英国の初期のコンピューターでは一般にBラインとして知られているインデックスレジスターは、1949年にイギリスのマンチェスターマーク1コンピューターで最初に使用されました。 。 IBM 700/7000メインフレームシリーズのほとんどのマシンには、1954年のIBM 704から始まりましたが、IBM 650やIBM 1401などの一部の小型マシンではオプションでした。

インデックスレジスタを備えた初期の「小型マシン」には、1960年頃のAN / USQ-17、および1960年代初期のScientific Data Systemsの9シリーズのリアルタイムコンピューターが含まれます。

Intel 8080はレジスタを介した間接アドレス指定を許可していましたが、真のインデックスレジスタを持つ最初のマイクロプロセッサはMotorola 6800であり、同様のMOS Technology 6502はそのようなレジスタを2つ使用していました。

一般に、最新のコンピューター設計には専用のインデックスレジスタが含まれていません。代わりに、汎用レジスタにアドレスを含めることを許可し、定数値を許可します。一部のマシンでは、別のレジスタの内容をオフセットとして追加して、実効アドレスを形成できます。この方法で設計された初期のコンピューターには、PDP-6およびIBM System / 360が含まれます。

4バイトワードの100エントリ配列を合計するアセンブリ言語擬似コードでのインデックスレジスタの使用の簡単な例を次に示します。

Clear_accumulator Load_index 400、index2 // 4 *配列サイズをインデックスレジスタ2(index2)にロードしますインデックスレジスタがゼロになるまで4