[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下の関数を使って、関数の呼び出し元についての情報を得ることができる。
__builtin_return_address (level)
この関数は、現在の関数か、あるいはその呼び出し元関数のどれか一つの
戻りアドレスを返す。
引数 level は、呼び出しスタックを走査すべきフレーム数である。
この値が 0
であれば、現在の関数の戻りアドレスを返す。
この値が 1
であれば、現在の関数の呼び出し元の戻りを返す。
以下同様。
引数 level は整数定数でなければならない。
機種によっては、現在の関数以外の関数の戻りアドレスを決定することが
不可能な場合がある。
そういう場合や、スタックの頂点に達したときは、この関数は 0
を
返す。
この関数は、ゼロ以外の引数をつけてデバッグ用にのみ使うべきである。
__builtin_frame_address (level)
この関数は __builtin_return_address
に似ているが、
関数の戻りアドレスではなく、関数フレームのアドレスを返す。
__builtin_frame_address
を引数値を 0
として
呼び出すと、現在の関数のフレームアドレスを返す。
1
を引数値とすると、現在の関数の呼び出し元関数のフレームアドレスを
返す。以下同様。
フレームは、ローカル変数やセーブされたレジスタを保持するスタック上の
領域である。フレームアドレスは、普通は、その関数によりスタックにプッシュ
された先頭のワードのアドレスになる。
しかし、厳密な定義は、プロセッサと呼び出し規約に依存する。
プロセッサにフレームポインタ専用レジスタがあれば、関数はフレームを
一個持ち、__builtin_frame_address
は、そのフレームポインタ
レジスタの値を返す。
__builtin_return_address
についての注意が、この関数についても
同様に当てはまる。
This document was generated
using texi2html 1.78.