C および C++ コードのインラインアセンブラの関数呼び出しと分岐

インラインアセンブラで記述された BL 命令と SVC 命令を使用して、通常の命令フィールドの後に 3 つのオプションリストを指定できます。これらの命令の形式は以下のとおりです。

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}

Note

SVC 命令は以前は SWI という名前でした。インラインアセンブラは引き続き、SVC の代わりに SWI を受け入れます。

アーキテクチャ 5TE 以降を対象にコンパイルする場合、必要に応じてリンカにより BL function 命令が BLX function 命令に変換されます。ただし、インラインアセンブリコード内から直接 BLX function 命令を使用することはできません。

以下のトピックでは、これらのリストについて説明します。

Note

  • インラインアセンブラでは、BXBLX、および BXJ 命令がサポートされていません。

  • 入力レジスタリスト、出力レジスタリスト、破壊レジスタリストのいずれにおいても、lrsppc のどのレジスタも指定できません。

  • sp レジスタは、SVC 命令または関数呼び出しで変更しないで下さい。

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711