- IAR Embedded Workbench for Arm 9.70.x
- IAR C/C++ 開発
- リンカ設定ファイル
- セクションの選択
- extended-selectors
extended-selectors
構文
[extended-selector[ ,extended-selector...]]
ここで、extended-selectorは以下のように指定します。
[ first | last| midway ] {section-selector| blockname[inline-block-def] | overlayname}
ここで、inline-block-defは以下のように指定します。
[ block-params ] extended-selectorsパラメータ
| 選択したセクションやブロック、オーバレイを、それらを含む配置ディレクティブ、ブロック、オーバレイの最初に配置します。 |
| 選択したセクションやブロック、オーバレイを、それらを含む配置ディレクティブ、ブロック、オーバレイの最後に配置します。 |
| 選択したセクション、ブロック、オーバレイを、ブロックの端から、それらを含むブロックの最大サイズの半分よりも遠くならないように配置します。このパラメータは、最大サイズを持つブロック内でしか使用できない点に注意してください。 |
| ブロックまたはオーバレイの名前。 |
説明
配置ディレクティブまたはオーバレイに含める内容を選択するには、extended-selectorsを使用します。セクション選択パターンの使用に加えて、含めるブロックやオーバレイを明示的に指定することもできます。
firstまたはlastキーワードを使用して、それらを含む配置ディレクティブの最初もしくは最後に配置するパターンやブロック、オーバレイを指定することができます。注:
firstまたはlastキーワードは、それが使用されるスコープに対してローカルとなります。そのスコープ外では影響はありません。firstがブロック内で使用されてもブロックには影響ありません。place inディレクティブに、別のplace inディレクティブの対象となるリージョンを対象とするlastキーワードが含まれている場合は、lastキーワードは、定義された配置ディレクティブのそのコンテンツの最後に配置されます。他には影響はありません。リージョンの最後に配置する場合は、すべてを含む単一ブロックを定義するか、そのリージョンを対象とする単一の
place inディレクティブにすべてを配置する必要があります。
配置する順序をより正確に制御する必要がある場合は、固定の順序を持つブロックを使用できます。
ブロックは、define blockディレクティブやインラインをextended-selectorの一部として使用すれば、個別に定義することができます。
midwayパラメータは、主に正と負の両方のオフセットを持つことができるスタティックベースとともに使用すると便利です。
例
define block First { ro section .f* }; /* Define a block holding
any read-only section*/
matching ".f*" */
define block Table { first block First, ro section .b* };
/* Define a block where
the block First comes
before the sections
matching ".b*". */または、個別のdefine blockディレクティブ内ではなく、ブロックFirstをインラインで定義することもできます。
define block Table { first block First { ro section .f* },
ro section .b* };