10.137 __return_address コンパイラ組み込み関数

このコンパイラ組み込み関数は、現在の関数の復帰アドレスを返します。

構文

unsigned int __return_address(void)

戻り値

__return_address コンパイラ組み込み関数を使用すると、現在の関数から復帰する場合に使用されるリンクレジスタの値が返されます。

制約条件

__return_address コンパイラ組み込み関数は、インライン展開、末尾の呼び出し、コードの共有など、最適化を実行するコンパイラの機能には影響しません。最適化が実行された場合、 __return_address によって返された値は、実行された最適化を反映します。
最適化なし
何の最適化も実行されない場合、 関数 foo() 内から __return_address によって返される値は、foo() の復帰アドレスになります。
インライン最適化
関数 foo() が関数 bar() にインライン展開されると、関数 foo() 内から __return_address によって返される値は、 bar() の復帰アドレスになります。
Tail 呼び出し最適化
関数 foo() が関数 bar() から末尾呼び出しされると、関数 foo 内から __return_address によって返される値は、 bar() の復帰アドレスになります。
関連する参考文書
10.110 __current_pc コンパイラ組み込み関数
10.111 __current_sp コンパイラ組み込み関数
10.160 GNU 組み込み関数
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.