この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "レジスタ" コンピュータ
レジスタ(英: register)はコンピュータのプロセッサなどが内蔵する記憶回路で、制御装置や演算装置や実行ユニットに直結した、操作に要する速度が最速の、比較的少量のものを指す[1]。 一般に、論理回路において、フリップフロップなどにより状態を保持する装置をレジスタと呼ぶ。コンピュータにおいては、プロセッサが内蔵しているそれを指す。プロセッサには、命令セットで明示的に操作するレジスタ以外に、プロセッサ自身が動作するためのレジスタがあり、内部レジスタなどと呼ばれる。 論理回路において使われるレジスタという用語としては、たとえばレジスタ転送レベルなどがある。 プロセッサ内部のレジスタは、計算結果を一時的に保持したり、RAMやROMなどのメインメモリにアクセスする際のアドレスを保持したり、プロセッサや周辺機器の動作状態を保持・変更したりする。プロセッサの動作とは、極端にいえば、プログラムコードに従ってメインメモリとレジスタの間でデータを移送することだと表現できる。 プロセッサ内部にはたいてい数個から数十個のレジスタがあり、内部バスや演算回路などと密接に結びついているため、高速に動作する。 プロセッサについて「○○ビットプロセッサ(あるいは○○ビットCPU、○○ビットDSPなど)」と表現する場合、その目安の一つがレジスタの幅、特にそのプロセッサの汎用レジスタの幅である。また、MC68000のようにプロセッサ自体の設計は32ビットだが外部データバスは16ビット、といった設計の場合、「内部32ビット・外部16ビットCPU」のように言うこともある。こだわる人もいるが、そもそも厳密に定義できるわけでもないのでこだわる意味はない。 プロセッサの内部にどのようなレジスタがあるかということは、そのプロセッサの構造(アーキテクチャ)と命令セットに密接に関わる。 プロセッサ内部のレジスタには、用途に応じていくつかの種類がある。 通常、レジスタには、マニュアルなどで使われる英字1?3文字程度の略称がある。 特定の目的を持つレジスタ。 演算装置の出力と片方の入力につながった、ただ1個のレジスタがあり、そのレジスタに演算の結果を溜め込むことができる、といった古い設計のコンピュータで使われた語である。現在でもx86のAXレジスタのような多用されるレジスタを指して言うことがある。 A, ACCと略すことが多い。 演算結果を置いたり、データを一時的に記憶するレジスタである。プロセッサの内部バスにより演算装置とデータをやりとりできる。また、外部データバスとデータをやりとりできる。 メモリをアクセスする場合のアドレスを指定するときに用いるレジスタである。この内容を外部アドレスバスに出す事により、メインメモリからデータを読み出す。また、プロセッサによっては、アドレスを計算するための演算回路が付属しており、実効アドレスの計算を行なうことができるようになっていることもある。 アドレスレジスタの一種で、配列のベースアドレスを示すために利用できるレジスタである。配列データにアクセスするコードが簡単に記述できる。 配列のインデックスを指すために利用できるレジスタである。前述のベースレジスタが示すアドレスをベースとしたオフセットを指すようにして使う。あるいは配列の要素1個のサイズ分(たとえば4バイト整数の配列でインデックスが3ならオフセットは12)スケーリングすることができる。配列データにアクセスするコードが簡単に記述できる。アーキテクチャによっては、ベースレジスタの代わりにインデックスレジスタが配列の基点を指し、これにデータレジスタの値をスケーリングしてアクセスするものもある。 IXなどと略すことが多い。 アドレスレジスタの一種で、コールスタックの先頭を指すポインタレジスタである。これが示すアドレスの内容を読み出すと同時にアドレスを増やす、逆に、示すアドレスに書き込むと同時にアドレスを減らす、といった動作を行えるものが多い(特にCISCでは)。 また、このような、アドレスを参照してロードあるいはストアと同時にアドレスレジスタのインクリメント、デクリメントを行えるモードを「ポストインクリメント」・「プリデクリメント」、または「プリインクリメント」・「ポストデクリメント」と言う(プリとポストの組み合わせは、通常このどちらかになる)。 SPと略すことが多い。
概説
レジスタの種類
専用レジスタ
アキュムレータ詳細は「アキュムレータ (コンピュータ)」を参照
データレジスタ
アドレスレジスタ
ベースレジスタ
インデックスレジスタ
スタックポインタ
Size:29 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef