組み込み学習メモ(2) ARMの37レジスタを詳しく解説

  • ARM のレジスタには SFR と 37 個の汎用レジスタがあり、汎用レジスタは CPU の不可欠な部分 (計算機 + コントローラ + 汎用レジスタ) です。
  • 37 個の汎用レジスタが 7 つの動作モードで学習されます。表示される汎用レジスタは動作モードごとに異なるため、各モードで最大 18 個のレジスタのみが表示されます。また、同じ名前を持つレジスタもありますが、現在のモードでは表示されません。
  • R13 という名前の場合、ARM には R13 (sp とも呼ばれる) という名前のレジスタが 6 つありますが、それぞれの特定の動作モードでは、現在のモードの R13 のみが表示され、他の r13 を表示するには他の対応するモードに切り替える必要があります。この設計はシャドウ デポジット (銀行レジスター) と呼ばれます。
  • ユーザー モードとシステム モードは一連のレジスタを共有し、5 つの異常モードには独自の R13、R14、SPSR があります。
  • R13 はスタック ポインタとして使用されるため、sp とも呼ばれます。プロセッサの各動作モードには独自の独立した物理レジスタ R13 があるため、ユーザー アプリケーション プログラムの初期化部分で、一般に各モードで R13 を初期化する必要があります。この実行モードのスタック領域を指します。このようにして、プログラムの動作が例外モードに入るときに、保護対象のレジスタを R13 が指すスタックに入れることができ、プログラムが例外モードから復帰するときに、対応するスタックから復元されます。このメソッドは、プログラムの通常の実行後に例外が発生することを保証できます。
  • R14 はリターンアドレスを保存するために使用されるため、リンクレジスタ lr とも呼ばれ、サブルーチンコール命令 (BL) の実行時に R14 は R15 (プログラムカウンタ PC) のバックアップを取得できます。各動作モードでは、R14 を使用してサブルーチンの戻りアドレスを保存できます。サブルーチンが BL 命令または BLX 命令によって呼び出されるとき、PC の現在値が R14 にコピーされます。サブルーチンの実行後、PC の値は R14 にコピーされます。 R14 をコピーし、PC に戻ってサブルーチンコールを完了してリターンします。
  • r15 はプログラム制御レジスタとして使用されるため、PC とも呼ばれます。ARM 状態ではビット [1:0] は 0、ビット [31:2] は PC を保存するために使用され、Thumb 状態ではビット [0] は0、ビット [31:1] は PC を保存するために使用されます。ARM アーキテクチャはマルチステージ パイプライン テクノロジを採用しているため、ARM 命令セットの場合、PC は常に現在の命令の次の 2 つの命令のアドレスを指します。つまり、PC の値は現在の命令のアドレス値です。プラス 8 バイト。
  • CPSR プログラム ステータス レジスタ。現在の CPU の状態を記録します。CPSR には、条件フラグ ビット、割り込み禁止ビット、現在のプロセッサ モード フラグ ビット、およびその他の関連する制御およびステータス ビットを含む、任意の動作モードでアクセスできます。
  • SPSR は CPSR の複製です。各動作モードには、SPSR (セーブド プログラム ステータス レジスタ、バックアップ プログラム ステータス レジスタ) と呼ばれる専用の物理ステータス レジスタがあります。例外が発生すると、SPSR は CPSR の現在値を保存するために使用されます。例外から終了するとき、CPSR は次の操作を行うことができます。 SPSRによって回収されました。

ユーザーモードとシステムモードは例外モードではないため、SPSR がありません。これら 2 つのモードで SPSR にアクセスした場合、結果は不明です。

さらに埋め込まれた学習ノートや実践的なプロジェクトについては、ここをクリックして無料で入手してください

おすすめ

転載: blog.csdn.net/m0_70888041/article/details/132554700