web-dev-qa-db-ja.com

レジスターの「バンク」とはどういう意味ですか?

ウィキペディアで「ARMアーキテクチャ」を読んで、次の文を見つけました:

レジスタR0〜R7はすべてのCPUモードで同じです。彼らは決して預けられません。

R13とR14は、システムモードを除くすべての特権CPUモードにまたがっています。

レジスターのバンキングとはどういう意味ですか?

30
lang2

レジスタバンキングとは、同じアドレスにレジスタの複数のコピーを提供することを指します。

アームのセクション1.4.6から取得 docs

この用語は、すべてのレジスタを一度に表示できないという問題の解決策を指します。

プロセッサモードごとに異なるレジスタバンクがあります。バンクされたレジスターは、プロセッサー例外と特権操作を処理するための迅速なコンテキスト切り替えを提供します。

より理論的な推論をお探しの場合は、 this 用紙をお勧めします。
編集:私よりもはるかに深い回答が得られます ここ

23
enjoylife

プロセッサが例外に入ると、バンクレジスタはこれらのレジスタの別のセットと自動的に切り替えられます。

事実上、例外ハンドラルーチンは、これらのレジスタをスタックに保存して、後で例外ハンドラ関数によって破壊されないようにする必要はありません。プロセッサはそのセットの安全なコピーを保持するだけです。例外復帰時に元のセットを復元します。

12
Benoit