7.8 C および C++ コードのインラインアセンブラのレジスタの制限

r0-r3splr などのレジスタ、および CPSR の NZCV フラグを使用する場合は、注意が必要です。

C または C++ の式を使用する場合、これらのレジスタが一時的なレジスタとして使用され、式を評価するときにコンパイラによって NZCV フラグが壊される場合があります。
物理レジスタに直接アクセスできないため、インラインアセンブリコードを使用して、レジスタ pclr、および sp を明示的に読み出したり変更したりすることはできません。ただし、__current_pc__current_sp、および __return_address のコンパイラ組み込み関数を使用してこれらのレジスタを読み出すことができます。
関連する概念
7.7 C および C++ コードのインラインアセンブリ演算の制限
7.9 C および C++ コードのインラインアセンブラのプロセッサモードの制限
7.10 C および C++ コードのインラインアセンブラの Thumb 命令セットの制限
7.11 C および C++ コードのインラインアセンブラのベクタ浮動小数点(VFP)の制限
7.12 C および C++ コードのインラインアセンブラの命令の制限
7.13 C および C++ コードのその他のインラインアセンブラの制限
7.14 C および C++ コードのインラインアセンブラおよびレジスタアクセス
関連する参考文書
10.110 __current_pc コンパイラ組み込み関数
10.111 __current_sp コンパイラ組み込み関数
10.137  __return_address コンパイラ組み込み関数
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.