先頭へ戻る

レジスタ | Programming Place Plus 用語集

Programming Place Plus トップページ -- 用語集

先頭へ戻る

名称


解説

プロセッサの内部にあり、最も高速にアクセスできる記憶装置です。

アクセスが非常に高速である反面、記憶できるデータの量は非常に小さくなっています。

レジスタの記憶容量は、(違う場合もありますが)いわゆる「64ビットCPU」では 64ビット、「32ビットCPU」では 32ビットといったように対応関係があります。しかも、レジスタは数個~数十個程度しかありません(ただし、GPU などの特定用途のプロセッサには、数千個以上のレジスタが内蔵されていることがあります)。

レジスタには、それぞれを識別するための名前が付けられています。これは、プロセッサの仕様によって異なります。

レジスタには、用途が限定されていない汎用レジスタと、用途が限定されている専用レジスタがあります。また、プロセッサ自身が使う内部レジスタもあります。

専用レジスタの例として、アドレスレジスタステースタレジスタなどがあります。アドレスレジスタは、メインメモリへアクセスする際のメモリアドレスを記憶するためのレジスタです。ステータスレジスタは、演算結果などに応じて覚えておくべき状態を記憶するために使われます(演算結果の正負、オーバーフローの有無など)。

プログラミングでよく登場するスタックポインタプログラムカウンタは、アドレスレジスタの一種です。


メインメモリへのアクセスよりも、レジスタへのアクセスの方が高速ですから、変数や、計算結果などはレジスタに格納した方が効率的です。アセンブリ言語を除いて、ほとんどのプログラミング言語では、レジスタを使うように直接的な指示を与えることはできませんが、代わりにコンパイラが判断して、適切に判断してレジスタを使用するコードを生成します。

C言語C++ には、register というキーワードがあり(C言語編第57章)、変数をレジスタに割り当てる指示として使われることがありました。しかし現代では、コンパイラに判断を任せることが基本となっており、コンパイラによっては registerキーワードによる指定を完全に無視します。C++ にいたっては、C++11 で非推奨、C++17 で仕様から削除されています(Modern C++編【言語解説】第2章)。


参考リンク


更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー