非機密扱い |
![]() |
ARM DUI0474JJ | ||
|
||||
ホーム > リンカコマンドラインオプション > --sort=algorithm |
出力イメージのセクションの順序を決定するために使用されるソートアルゴリズムを指定します。
--sort=algorithm
algorithm
には、以下のいずれかを指定します。
境界整列
アライメント値の昇順で入力セクションをソートします。
AlignmentLexical
入力セクションをアライメント値の昇順でソートし、次に語句順にソートします。
AvgCallDepth
Thumb コードすべてを ARM コードより先にソートしてから、各セクションの近似平均コール深度に従って昇順にソートします。
長分岐ベニアの数を最小限にするには、このアルゴリズムを使用します。
平均コール深度の近似値は入力セクションの順序によって異なります。したがって、このソートアルゴリズムは、例えば RunningDepth
を使用するよりも、入力セクションの順序に大きく依存します。
BreadthFirstCallTree
これは、コールツリーをリストに平板化する際に幅優先探索が使用される点を除き、CallTree
アルゴリズムと似ています。
CallTree
リンカは、CallTree
ソートが有効になっているすべての実行領域のコールツリーを、読み取り専用のコードセクションを含むリストにリスト化します。
このリストのセクションがその実行領域にコピーされた後、読み取り専用以外のすべてのコードセクションが語句順にソートされます。このようにすると、相互を呼び出すセクションが近くに配置されます。
このソートアルゴリズムは、RunningDepth
または AvgCallDepth
を使用する場合ほど、入力セクションの順序に依存しません。
Lexical
セクション名に従ってソートし、名前が同じ場合は入力順に並べます。
LexicalAlignment
入力セクションを語句順、次にセクション名でソートし、名前が同じ場合には入力順にソートします。
LexicalState
ARM コードの前に Thumb コードをソートし、その後、語句順にソートします。
List
使用可能なソートアルゴリズムをリスト表示します。リンカはリストを表示した後で終了します。
ObjectCode
tiebreaker でコードセクションをソートします。他のすべてのセクションは語句順にソートされます。同じオブジェクトのすべてのセクションをメモリマップ内でグループ化しようとするため、これは --tiebreaker=cmdline
とともに使用した場合に最も有用です。
RunningDepth
Thumb コードすべてを ARM コードより先にソートしてから、セクションの実行深度に従って昇順にソートします。セクション S の実行深度は、S を呼び出すすべてのセクションの平均コール深度で、S を呼び出す回数で重みが付けられます。
長分岐ベニアの数を最小限にするには、このアルゴリズムを使用します。
ソートアルゴリズムは標準的な規則に従って、入力セクションを属性の昇順に配置します。
個々の実行領域のスキャッタファイルでもソートアルゴリズムを指定できます。これを行うには、SORTTYPE
キーワードを使用します。
デフォルトのアルゴリズムは --sort=Lexical
です。大領域モードでは、デフォルトのアルゴリズムは --sort=AvgCallDepth
です。