CFIディレクティブ
このセクションの内容:
CFIディレクティブは、呼び出し元関数のステータス情報をC-SPYに提供します。この中で最も重要な情報は、リターンアドレスと、関数やアセンブラルーチンのエントリ時点でのスタックポインタの値です。C-SPYは、この情報を使用して、呼び出し元関数の状態を復元し、スタックを巻き戻すことができます。
呼び出し規約に関する詳細記述では、広範なコールフレーム情報を必要とする場合があります。多くの場合は、より限定的なアプローチで十分です。
コールフレーム情報を記述するには、以下の3つのコンポーネントが必要です。
32ビットモード呼出しフレーム情報リソース:
リソース | 説明 |
|---|---|
| スタックのコールフレーム |
| プロセッサ汎用32ビットレジスタ |
| スタックポインタ、 |
| リンクレジスタ、 |
| ベクトル浮動小数点(VFP) 64ビットコプロセッサレジスタ |
| 現在のプログラムステータスレジスタ |
| 保存されたプログラムステータスレジスタ |
表85 32ビットモード名前ブロックで定義されている呼出しフレーム情報リソース
64ビットモード呼出しフレーム情報リソース:
リソース | 説明 |
|---|---|
| プロセッサ汎用64ビットレジスタ |
| リンクレジスタ、 |
| スタックポインタ |
| スタックのコールフレーム |
| 例外レベル |
| ベクタ浮動小数点(VFP) 64ビットレジスタ(実際には128ビットですが、ABIはこれを扱うことができません) |
表86 名前ブロックで定義されている64ビットモード呼出しフレーム情報リソース