C および C++ コードのインラインアセンブラの 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}

output_value_list では、BL または SVC 命令からの出力値を保持する物理レジスタと、それらの出力値をストアする場所が指定されます。これらの出力値は、物理レジスタから修正可能な左辺値式への引数として、または個々の物理レジスタの名前として指定されます。

インラインアセンブラは、指定された物理レジスタから値を取得し、指定された式にそれらの値を代入します。引数なしで物理レジスタ名が指定されていると、同じ名前の仮想レジスタが、その物理レジスタから取得した値で更新されます。

例えば、以下の命令

BL foo, { }, { result1=r0, r1 }

からは、以下の疑似コードが生成されます。

BL foo
MOV result1, (physical) r0
MOV (virtual) r1, (physical) r1

デフォルトでは、output_value_list 出力値を指定しない場合、レジスタ r0 が出力値に使用されます。

Note

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

Show/hide関連項目

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