8.4.3 実行領域の属性

実行領域には属性があり、これによって、ランタイム時にイメージのどの部分をターゲットメモリにロードするかを制御できます。

以下に、実行領域の属性を示します。
ABSOLUTE
リンク後に変更されない固定アドレスに内容が配置されます。領域の実行アドレスはベース指定子で指定されます。
ALIGN alignment
実行領域の配列制約を 4 から alignment に引き上げます。 alignment は、2 の累乗の正の数を指定する必要があります。実行領域に base_address がある場合、これは alignment で整列されます。実行領域に +offset が指定されている場合、領域の計算されたベースアドレスは alignment 境界で整列されます。

実行領域に対して ALIGN を使用すると、ロードアドレスと実行アドレスの両方が整列されます。その結果、ELF ファイルにパディングが追加されることがあります。実行アドレスのみを整列させる場合は、ベースアドレスに対して AlignExpr 式を使用します。
ALIGNALL value
実行領域内のセクションのアライメントを増やします。
2 の累乗で 4 以上の値を指定する必要があります。
ANY_SIZE max_size
armlink が未割り当てセクションで満たすことができる実行領域内で最大サイズを指定します。単純な式を使用して、 max_size を指定することができます。ただし、 ImageLimit() などの関数は使用できません。

max_size は予備領域ではありませんが、実行領域の未割り当てセクションの配置で使用できる最大サイズです。例えば、実行領域が .ANY セクションのみで満たされている場合、2% の予備領域がベニア用に確保されます。これにより、.ANY セクションを割り当てるための残りの領域は 98% になります。
このキーワードを使用する場合は、以下の制限事項に注意して下さい。
  • max_size は、領域サイズ以下である必要があります。
  • .ANY セレクタなしで ANY_SIZE を領域上で使用できますが、これは armlink によって無視されます。
EMPTY [–]length
このオプションを指定すると、通常はヒープまたはスタックのために、指定された size の空メモリブロックが実行領域内に確保されます。EMPTY 属性のある領域にはセクションを配置できません。
length は、メモリ内で下方に増加されるスタックを表します。長さに負の値が指定されている場合は、指定されている base_address が、その領域の終了アドレスとして使用されます。
FILL value
value を含んでいるリンカ生成領域を作成します。FILL を指定する場合、FILL 0xFFFFFFFF です。FILL 属性は、EMPTY ZEROPAD PADVALUE という組み合わせを置き換えます。
シミュレーションなどの特定の状況では、ゼロを書き込むループに時間を費やすよりも、このオプションを使用することを推奨します。
FIXED
固定アドレス。リンカは、実行アドレスをロードアドレスと等しくしようとします。これによって領域がルート領域になります。これが不可能な場合は、エラーが生成されます。

リンカは、この属性を基にパディングを挿入します。
NOCOMPRESS
デフォルトでは、RW データ圧縮は有効になっています。NOCOMPRESS キーワードを使用すると、最終イメージで実行領域の RW データが圧縮されないように指定できます。
OVERLAY
オーバーレイアドレス範囲のあるセクションに使用します。連続する実行領域の +offset が同じ場合、同じベースアドレスが割り当てられます。
リンク後に変更されない固定アドレスに内容が配置されます。内容は OVERLAY 領域として指定された他の領域と重複する可能性があります。
PADVALUE
パディングに使用する を定義します。PADVALUE を指定する場合、以下のように値を指定する必要があります。
EXEC 0x10000 PADVALUE 0xFFFFFFFF EMPTY ZEROPAD 0x2000
この結果、0xFFFFFFFF でパディングサイズ 0x2000 の領域が作成されます。
PADVALUE のサイズは 1 ワードである必要があります。ロード領域の PADVALUE 属性は無視されます。
PI
この領域には、位置非依存のセクションのみが含まれています。内容は固定アドレスに依存せず、リンク後、追加の処理なしに移動できます。

この属性は、イメージに実行専用セクションが含まれている場合にはサポートされません。
SORTTYPE アルゴリズム
実行領域のソート アルゴリズム を指定します。以下に例を示します。
ER1 +0 SORTTYPE CallTree

この属性により、--sort コマンドラインオプションで指定するソートアルゴリズムはオーバーライドされます。
UNINIT
これを使用して、初期化されていないデータまたはメモリマップされた I/O を含む実行領域を作成します。

ARM コンパイラでは、ECC を使用したシステムやメモリが初期化されないパリティ保護をサポートしていません。
ZEROPAD
ゼロで初期化されたセクションが、ゼロのブロックとして ELF ファイルに書き込まれます。このオプションを指定した場合、実行時にセクションにゼロを書き込む必要はありません。
これによって、ZI 出力セクションのロード長が Image$$region_name$$ZI$$Length に設定されます。
ルート実行領域に限り、ZEROPAD 属性を使用してゼロで初期化できます。ルート以外の実行領域で ZEROPAD 属性を使用すると、警告が生成されて属性は無視されます。
シミュレーションなどの特定の状況では、ゼロを書き込むループに時間を費やすよりも、このオプションを使用することを推奨します。
関連する概念
7.4.8 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作
3.3.3 リンカによるセクションの境界調整
7.9 ページ境界での領域の作成
7.10 実行領域と入力セクションのオーバーアライメント
7.12 スキャッタファイル内の式の評価を使用したパディングの回避の例
8.6.11 ロード領域に厳密に配置した状態で、実行領域でベースアドレスに合わせる例
7.6 オーバーレイを使用したセクションの配置
8.4.5 実行領域に相対アドレス +offset を使用する際の注意事項
8.6 スキャッタファイル内の式の評価
4.7 RW データ圧縮を使用した最適化
8.4.4 実行領域のアドレス属性の継承規則
関連する参考文書
8.4.1 実行領域の記述に含まれているコンポーネント
8.4.2 実行領域の記述に含まれている構文
6.3.3 Load$$ 実行領域シンボル
8.6.8 AlignExpr(expr, align) 関数
8.1 スキャッタロード記述構文で使用される BNF 記法
12.3 --any_contingency
6.3.2 Image$$ 実行領域シンボル
8.5.2 入力セクション記述の構文
12.134 --sort=algorithm
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.