Skip to main content

IAR Embedded Workbench for Arm 9.70.x

CFIディレクティブ

このセクションの内容:

CFIディレクティブは、呼び出し元関数のステータス情報をC-SPYに提供します。この中で最も重要な情報は、リターンアドレスと、関数やアセンブラルーチンのエントリ時点でのスタックポインタの値です。C-SPYは、この情報を使用して、呼び出し元関数の状態を復元し、スタックを巻き戻すことができます。

呼び出し規約に関する詳細記述では、広範なコールフレーム情報を必要とする場合があります。多くの場合は、より限定的なアプローチで十分です。

コールフレーム情報を記述するには、以下の3つのコンポーネントが必要です。

  • 追跡可能なリソースを示す名前ブロック(names block)

  • 呼び出し規約に対応する共通ブロック(common block)

  • A コールフレームで実行された変更を示すデータブロック(data block)。通常、これには、いつスタックポインタが変更されたか、いつ保護レジスタがスタックに待避、復帰したかについての情報が含まれます。

32ビットモード呼出しフレーム情報リソース:

リソース

説明

CFA R13

スタックのコールフレーム

R0–R12

プロセッサ汎用32ビットレジスタ

R13

スタックポインタ、SP

R14

リンクレジスタ、LR

D0-D31

ベクトル浮動小数点(VFP) 64ビットコプロセッサレジスタ

CPSR

現在のプログラムステータスレジスタ

SPSR

保存されたプログラムステータスレジスタ

表85 32ビットモード名前ブロックで定義されている呼出しフレーム情報リソース 


64ビットモード呼出しフレーム情報リソース:

リソース

説明

X0–X29

プロセッサ汎用64ビットレジスタ

X30

リンクレジスタ、LR

SP

スタックポインタ

CFA SP

スタックのコールフレーム

ELR_mode

例外レベル

V0-V31

ベクタ浮動小数点(VFP) 64ビットレジスタ(実際には128ビットですが、ABIはこれを扱うことができません)

表86 名前ブロックで定義されている64ビットモード呼出しフレーム情報リソース