汎用レジスタ

ARMv6-M および ARMv7-M ベースのプロセッサ以外のプロセッサには、バンク付き SP と LR レジスタを含めて、30 本(セキュリティ拡張機能が実装されている場合は 32 本)の汎用 32 ビットレジスタがあります。現在のプロセッサモードに応じて、同時に 15 本の汎用レジスタが認識されます。これら、R0 ~ R12、SP、および LR です。PC(R15)は、汎用レジスタとして認識されません。

SP(R13)はスタックポインタです。C コンパイラと C++ コンパイラでは、必ず SP がスタックポインタとして使用されます。汎用レジスタとして SP を使用することは推奨されてません。Thumb では、SP はスタックポインタとして厳密に定義されています。『アセンブラリファレンス』の命令のページでは、SP および PC を使用できる場合について説明しています。

ユーザモードでは、サブルーチン呼び出しが実行されたとき、LR(R14)をリンクレジスタとして使用することで、リターンアドレスをストアします。リターンアドレスがスタックにストアされる場合は、LR を汎用レジスタとして使用すこともできます。

例外処理モードでは、例外のリターンアドレス(例外内でサブルーチン呼び出しが実行された場合はサブルーチンのリターンアドレス)が LR にストアされます。リターンアドレスがスタックにストアされる場合は、LR を汎用レジスタとして使用することができます。

Note

--use_frame_pointer オプションを armcc と併用する際は、R11 を汎用レジスタとして使用しないでください。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311