- IAR Embedded Workbench for Arm 9.70.x
- IAR C/C++ 開発
- リンカ設定ファイル
- セクションの取扱い
- define sectionディレクティブ
define sectionディレクティブ
構文
define [ root ] [ space ] sectionname[ with alignment =sec-align] {section-content-item...};
それぞれのsection-content-itemは以下のいずれかです。:
udata8 {data|string}; sdata8data[ ,data] ...; udata16data[ ,data] ...; sdata16data[ ,data] ...; udata24data[ ,data] ...; sdata24data[ ,data] ...; udata32data[ ,data] ...; sdata32data[ ,data] ...; udata64data[ ,data] ...; sdata64data[ ,data] ...; spacedata; pad_todata-align; [ public ]label:if-item
if-itemは:
if (condition) {section-content-item... [} else if (condition] {section-content-item... ]... [} else {section-content-item...] }
パラメータ
| セクション名。 |
| セクションの最小アライメントを指定する式。必要に応じて、リンカによって暗黙的に増加させることができます。 |
| オプション。 |
| spaceが指定されている場合、 |
| パラメータが式( パラメータが引用符の場合、文字列のそれぞれの文字に1バイトメンバを生成します。 |
| 符号のある1バイトメンバを生成する以外は 可能な値範囲は |
| 符号なし2バイトメンバを生成する以外は |
| 符号付き2バイトメンバを生成する以外は |
| 符号なし3バイトメンバを生成する以外は |
| 符号付き3バイトメンバを生成する以外は |
| 符号なし4バイトメンバを生成する以外は |
| 符号付き4バイトメンバを生成する以外は 可能な価範囲は |
| 符号なし8バイトメンバを生成する以外は |
| 符号付き8バイトメンバを生成する以外は |
| spaceの |
| パッドバイトを生成して、式 |
[ | セクションの先頭からの現在のオフセットにラベルを定義します。
一般的に、シンボルのタイプは重要ではありません。 |
| アイテムの構成時間の選択。 |
| 式 |
| 式は再配置中だけ、または値が必要な場合にのみ評価されます。 |
説明
define sectionディレクティブを使用して、アセンブラ言語またはC/C++から使用できないコンテンツのセクションを作成します。これの例は、スタック使用量解析結果、ブロックのサイズ、および再配置として存在しない算術式です。
データ式の不明な識別子は、ラベルと考えます。
注記
データ式だけが、ラベル、スタック使用量解析結果などを使用できます。その他のすべての式は設定ファイルが読み取られるとすぐに評価されます。
以下の追加演算子が使用できます。
| カテゴリ内の任意のコールグラフルート関数で最も深いコールチェーンのスタックの深さ。 |
| カテゴリ内のそれぞれのコールグラフルート関数で最も深いコールチェーンのスタックの深さ合計。 |
| ブロックのサイズ。 |
例
define section data {
/* The application entry in a 16-bit word, provided it is less
than 256K and 4-byte aligned. */
udata16 __iar_program_start >> 2;
/* The maximum stack usage in the program entry category. */
udata16 maxstack("Application entry");
/* The size of the DATA block */
udata32 size(block DATA);
};
/* This defines the space section ExtraStack with a size of 0x2000 bytes.
The label ExtraStackStart is defined at the start of the section. The
label ExtraStackEnd is defined at the end of the section.
*/
define root space section ExtraStack
{
public ExtraStackStart:
space 0x2000;
public ExtraStackEnd:
};