インラインアセンブラの BL および SVC の破壊レジスタリスト

インラインアセンブラの BL 命令と SVC 命令の形式を以下に示します。

SVC{cond} svc_num, {input_param_list}, {output_value_list}, {corrupt_reg_list}
BL{cond} function, {input_param_list}, {output_value_list}, {corrupt_reg_list}

corrupt_reg_list では、呼び出される側の関数により破壊される物理レジスタが指定されます。呼び出される側の関数により条件フラグが変更される場合、破壊レジスタリストに PSR を指定する必要があります。

BL 命令と SVC 命令は、常に lr を壊します。

corrupt_reg_list を省略した場合に、BL 命令と SVC 命令を使用すると、レジスタ r0 ~ r3lr、および PSR が壊れます。

C または C++ の単一の関数内でラベルにジャンプするには、分岐命令 B のみを使用できます。

デフォルトでは、corrupt_reg_list レジスタを指定しない場合、r0r3r14、および PSR を壊すことができます。

Note

破壊レジスタリストでは、lrsp、または pc レジスタを指定できません。

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811