. |
-A,-F,-O,-R
|
通常L86Kは、オブジェクトモジュール中に記述されたCSEG部および、コマンドライン上で指定された順序にしたがってリンク(割り付け)をしますが、このときL86Kは実行可能ファイルのセグメントデータ(コードセグメント)を4096バイト境界にしたがって境界合わせを行ないます。このため、コードセグメント空間にいくつかの空き領域が生じる場合があります。
L86Kには、上記のような空き領域の発生を最小に抑え、メモリを効率良く使用できるように各セグメントブロックを最適な位置に割り付けるために4種類の配置機能があります。
次に各ローディング方法について記述します。
−Aオプションはリンク対象のすべてのコードセグメントブロックをサイズの大きい順にローディングします。このとき4096バイト境界にかかるセグメントブロックがINBLOCK属性の場合は境界合わせを行ない、FREE属性の場合は境界合わせを行なわずそのまま配置します。
−Fオプションは−Aと組み合わせたときのみ有効で、INBLOCK属性のコードセグメントブロックをコマンドライン上で指定された順序にしたがってリンクした後、前述の理由により生じた空き領域に対してFREE属性のコードセグメントブロックを割り付けるようにします(FREE属性のコードセグメントブロックを割り付ける領域がない場合は最終アドレスよりサイズの大きい順に割り付けます)。
−Oオプションは−Aと組み合わせたときのみ有効で、まずINBLOCK属性のコードセグメントをサイズの大きい順にリンクした後、空き領域に対してFREE属性のコードセグメントブロックを割り付けるようにします(FREE属性のコードセグメントブロックを割り付ける領域がない場合は最終アドレスよりサイズの大きい順に割り付けます)。
−Rオプションは−Aと組み合わせたときのみ有効で、まずINBLOCK属性のコードセグメントをサイズの大きい順にリンクした後、空き領域に対してFREE属性のコードセグメントブロックを割り付けるようにします。このとき、2つの連続した4096バイト空間にそれぞれ空き領域があれば後方のINBLOCK属性のコードセグメントを再配置して前後の空き領域を結合し、その領域に対してFREE属性のコードセグメントを割り付けます(FREE属性のコードセグメントブロックを割り付ける領域がない場合は最終アドレスよりサイズの大きい順に割り付けます)。
[←] | [INDEX] | [→] |
(C)SEGA ENTERPRISES, LTD., 1998