7.19 C および C++ コードのプロセッサ条件フラグに対するインラインアセンブラの効果

インラインアセンブリ言語命令によって、プロセッサ条件フラグの更新が明示的または暗黙に試行される場合があります。

仮想レジスタオペランドまたは単純式オペランドのみが使用されるインラインアセンブリ言語命令の動作は予測できます。暗黙または明示的な更新が指定されている場合には、条件フラグは命令によってセットされます。更新が指定されていなければ、条件フラグは変更されません。
命令オペランドのいずれかが単純オペランドではない場合には、その命令によって条件フラグが更新されない限り、条件フラグが壊れる可能性があります。
通常、コンパイラでは条件フラグが壊れる可能性を簡単には診断できません。ただし、C++ の一時領域を構成し、その後それを破棄する必要のあるオペランドがある場合は、命令によって条件フラグの更新が試行されると、コンパイラによって警告が生成されます。これは、一時領域の破棄によって条件フラグが壊れる可能性があるためです。
関連する概念
7.20 C および C++ コードのインラインアセンブラの式オペランド
7.21 C および C++ コードのインラインアセンブラのレジスタリストのオペランド
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.