12.4 --any_placement=algorithm

.ANY モジュールセレクタを使用して配置されるセクションの配置を制御します。

構文

--any_placement= algorithm
algorithm には、以下のいずれかを指定します。
best_fit
現在対象のセクションを格納できるだけの必要最小限のスペースがある実行領域にセクションを割り当てます。
first_fit
十分なスペースがある最初の実行領域にセクションを配置します。スキャッタファイルに定義されている順に実行領域が調査されます。
next_fit
以下の規則を使用してセクションを配置します。
  • 現在の実行領域に十分な空きスペースが存在する場合は、その領域に配置します。
  • 現在の領域にスペースが不足している場合にのみ、次の実行領域に配置します。
  • 前の実行領域にセクションを配置することはありません。
worst_fit
現在最も空きスペースのある実行領域にセクションを配置します。
このオプションは --scatter オプションと一緒に使用します。

使用法

配置アルゴリズムは、スキャッタファイルや --any_contingency に対して以下のように作用します。
通常のスキャッタロード規則に対する作用
.ANY を含むかどうかに関係なく、スキャッタロードでは、最も限定的なセレクタに対してセクションが割り当てられます。すべてのアルゴリズムは、.ANY の優先順位やサイズの考慮事項に優先して、最も限定的なセレクタに対して割り当てを実行し続けます。
.ANY の優先順位とのインタラクション
すべてのアルゴリズムにおいて、優先順位は、最も限定的なセレクタへの割り当て後に考慮されます。
worst_fit および best_fit は、それぞれの配置基準の前に優先順位を考慮します。例えば、 .ANY1.ANY2 というセレクタがあり、 .ANY1 領域に最も多くの空きスペースが存在するとします。 worst_fit を使用した場合、セクションは、より高い優先順位を持つ .ANY2 に割り当てられます。優先順位が等しい場合にのみ、アルゴリズムの作用が適用されます。
first_fit では、最も限定的なセレクタがまず考慮され、その後で優先順位が考慮されます。その他の配置規則は適用されません。
next_fit の場合も、その他の配置規則は適用されません。next_fit 中に領域が一杯としてマークされた場合、その領域は優先順位に関係なく考慮から外されます。
--any_contingency とのインタラクション
リンカによって生成されたコンテンツによって領域がオーバーフローした場合、.ANY セレクタの優先順位は 0 に引き下げられます。これは、ソートアルゴリズムや配置アルゴリズムとは無関係に有効/無効にされます。
armlink は、ワーストケースのコンティンジェンシをセクションごとに計算します。
worst_fitbest_fitfirst_fit の場合、コンティンジェンシーのために領域がオーバーフローしそうになると、armlink が、関連する .ANY セレクタの優先順位を引き下げます。
next_fit の場合、潜在的なオーバーフローが検出されると、 armlink は、そのセクションを一杯(FULL)としてマークし、今後は一切考慮しません。これによって、一杯になったセクションを一定の規則を持って考慮から外すことができます。

デフォルト

デフォルトのオプションは worst_fit です。
関連する概念
7.4.5 .ANY セクションの配置アルゴリズムの使用例
7.4.6 領域の割り当て、セレクタ、および優先度の動作を示す next_fit アルゴリズムの例
7.4 .ANY モジュールセレクタによる未割り当てセクションの配置
7.4.8 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作
関連する参考文書
12.5 --any_sort_order=order
12.71 --info=topic[,topic,…]
12.125 --scatter=filename
8.5.2 入力セクション記述の構文
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.