- IAR Embedded Workbench for Arm 9.70.x
- IAR C/C++ 開発
- リンカ設定ファイル
- セクションの取扱い
- define blockディレクティブ
define blockディレクティブ
構文
define [ movable ] blockname[ withparam,param... ] {extended-selectors} [ except {section-selectors} ];
ここで、paramは以下のいずれかです。
size =exprminimum size =exprmaximum size =exprexpanding size alignment = {expr|input} end alignment =exprfixed order alphabetical order static base [basename]
また、その他のディレクティブは、ブロックに含めるセクションを選択します(セクションの選択を参照)。
パラメータ
| 定義するブロックの名前。 |
| ブロックのサイズをカスタマイズします。デフォルトでは、ブロックのサイズは、その内容に依存するパーツの合計です。 |
| ブロックのサイズの下限を指定します。コンテンツが必要ない場合でも、ブロックはこれより大きいです。 |
| ブロックのサイズの上限を指定します。ブロックのセクションがこのサイズに合わない場合、エラーが発生します。 |
| ブロックは、配置されるメモリ範囲のすべての使用可能なスペースに展開します。 |
|
|
| ブロックの終了に最小アライメントを指定します。ブロックの終了アドレスは、通常その開始アドレスとそのサイズによって決まります。これはそのコンテンツによって異なります。ただし、このパラメータが使用されている場合は、必要に応じて終了アドレスは指定したアライメントに従って増やされます。 |
| 指定されたオーダーにセクションを配置します。それぞれの |
| セクション名のアルファベット順にセクションを配置します。 |
| 32ビットモードのみ:
|
説明
define blockディレクティブでは、空のセクションまたはその他のブロックのセットが含まれているメモリの連続エリアを定義します。内容のないブロックはスタックまたはヒープに空間を割り当てるために役立ちます。内容のあるブロックは、通常連続する必要のあるセクションといっしょにグループ化するために使用されます。
__section_begin、__section_end、または__section_size演算子を使用して、アプリケーションからブロックの開始、終了、およびサイズにアクセスできます。指定の名前のブロックがなくても、その名前のセクションがある場合は、リンカでブロックは作成され、それにはそのセクションがすべて入ります。
movableブロックは、リードオンリーおよびリード/ライトの位置に依存しない状態で使用します。ブロックをmovable(移動可能)にすると、リンカでアプリケーションによるアドレスの使用を検証できるようになります。移動可能なブロックは他のブロックとまったく同じように配置しますが、移動可能ブロック内のシンボルを参照する際に適切な再配置が使用されるかどうかをリンカがチェックします。
expanding sizeのブロックは、ほとんどヒープやスタックに使用されます。
注記
別のexpanding sizeがあるブロック内、最大サイズのブロック内、またはオーバーレイ内にexpanding sizeのブロックを配置できません。
例
/* Create a block with a minimum size for the heap that will use
all remaining space in its memory range */
define block HEAP with minimum size = 4K, expanding size, alignment = 8 { };関連項目
ツールとアプリケーション間の相互処理。アクセスの例については、define overlayディレクティブを参照してください。