リンカ オプション

リンカ オプションにより、リンク方法をさまざまに制御できます。各リンカ オプションは、先頭にマイナス記号 (-) またはスラッシュ (/) を付けて指定します。大文字と小文字は区別されません。リンカ オプションを指定する順番は自由で、オブジェクト ファイル名の前後どちらにでも指定できます。

以下では、各リンカ オプションをアルファベット順に説明します。

/32

64 KB を超えるセグメントをリンクします。現在、LIL が 64 KB 超のセグメントをサポートしているファイル形式は、/B で作成される BIN 形式だけです。

/AMIN<hhhh> 〔x86〕

.EXE ファイルの MINALLOC フィールドの値を指定します。作成したプログラムに OS から割り当てられる最小メモリサイズの 1/16 を 16 進数で指定します。たとえば、/AMIN300 と指定すると、300 ラ 16 = 4800 バイトのメモリが割り当てられます。

通常、MINALLOC フィールドには適切な値が自動的に設定されるため、このオプションを指定する必要はありません。

/AMAX<hhhh> 〔x86〕

.EXE ファイルの MAXALLOC フィールドの値を指定します。作成したプログラムに OS から割り当てられる最大メモリサイズを指定します。指定方法は /AMIN と同じです。

/B[<seg-address>]

単純なバイナリ イメージ ファイル (拡張子「.bin」) を作成します。BIN ファイルは COM ファイルと似ていますが、COM とは異なり先頭の 100h バイトが除去されません。

イメージを 1 以上のアドレスに配置する場合は、seg-address を指定します。たとえば、LIL /BFE00 と指定すると、FE00:0000 以降に配置して実行するためのバイナリ イメージが生成されます。

例    LIL F1.OBJ F2.OBJ /B
    LIL F1.OBJ F2.OBJ /B1200

/C 〔x86〕

COM 形式実行ファイルを作成します。拡張子「.com」の実行ファイルが作成されます。このオプションを指定してリンクするプログラムは、あらかじめ COM 形式向けに作られている必要があります。

このオプションを指定せずに EXE 形式実行ファイルを作成し、それを MS-DOS に付属のユーティリティ EXE2BIN を使用して COM 形式に変換することもできます。

/D 〔x86〕

セグメントを MS-DOS 標準セグメント順序に従って配置します。これは、アセンブラのソースファイルに DOSSEG ディレクティブを記述することと同じです。

/E<file-name>

作成する実行ファイルの名前を指定します。<file-name> の拡張子を省略すると、実行ファイルの既定拡張子(EXE、HEX、COM など)が追加されます。

このオプションを指定しなければ、最初に指定したオブジェクト ファイル名の拡張子を実行ファイルの既定拡張子に取り替えた名前で実行ファイルが作成されます。

/H 〔x86〕

最小の EXE 形式ファイルを作成します。/C を指定した場合、このオプションは無効です。

/HEX

インテル HEX 形式ファイルを生成します。詳細については、「インテル HEX 形式」を参照してください。

/M[<file-name>]

マップ ファイルを作成します。<file-name> を省略すると、最初に指定したオブジェクト ファイル名の拡張子を「.MAP」に取り替えた名前でマップ ファイルが作成されます。マップ ファイルには、作成された実行ファイル内のセグメントの位置、サイズ、グローバル名の位置などが示されます。

/K<name>

ライブラリ検索パスを示す環境変数名を指定します。

例    LIL SAMPLE.OBJ /KLIBRARY

/L<path>

ライブラリを指定します。環境変数 LCLIB と同じ機能です。

例    LIL SAMPLE.OBJ /LC:\LIB\*.OBJ

<path> には、オブジェクト ファイルまたはライブラリ (.llb) ファイルを指定します。ワイルドカードも使用できます。

このオプションを指定すると、リンク対象のオブジェクト ファイルに解決できない外部名が含まれていた場合に <path> で指定したファイルが検索され、その名前を公開しているオブジェクト ファイルまたはライブラリ モジュールが自動的にリンクされます。

/PF

オプション /L で自動的にリンクされたオブジェクト ファイルの名前を表示します。

/PFL

オプション /L で指定されたオブジェクト ファイルを自動的にリンクする原因となった未解決名を表示します。

/R

警告メッセージが発生した場合に、戻り値 1 でLIL を終了します。通常は、エラーが発生した場合は戻り値 2、それ以外は戻り値 0 で OS に戻ります。

/RE0

エラーが発生しても、戻り値 0 でLIL を終了します。

/RL

HEX ファイル生成時に、拡張セグメントアドレス (ESA) レコードよりも拡張リニア (ELA) アドレスレコードを優先して使用します。詳細については、「インテル HEX 形式」を参照してください。

/S<セグメント名>=<セグメントアドレス>[:<配置アドレス>]

セグメントのアドレスを絶対的に指定します。/HEX オプションを指定した場合にのみ意味があります。SEGMENT 文の AT および PLACE_AT 属性に相当します。

<セグメント名> には、ソースコード中に記述したセグメント名を指定します。

<セグメントアドレス> には、そのセグメントのアドレスを 16 進数で指定します。4 バイトの絶対アドレスではなく、2 バイトのセグメントのアドレスを指定することに注意してください。8086 系のオブジェクトファイルをリンクするときは 16 倍、Z80/KC160 系のオブジェクトファイルをリンクするときは 256 倍が実効アドレスになります。

<配置アドレス> には、そのセグメントのデータを配置するアドレスを 4 バイトの絶対アドレスで指定します。この指定は、SEGMENT 文の PLACE_AT 属性に相当します。<配置アドレス> を省略すると、そのセグメントは <セグメントアドレス> に配置されます。

<配置アドレス> を "NO" と指定すると、そのセグメントは HEX ファイルに出力されません。"CNT" と指定すると、直前のセグメントに続くパラグラフ アドレスに配置されます。

「/SSEG=:42000」のように、<セグメントアドレス> を省略して <配置アドレス> だけを指定することもできます。

詳細については、「インテル HEX 形式」を参照してください。

    LIL SAMPLE.OBJ /SCSEG=1000 /DSEG=FF000
    LIL SAMPLE.OBJ /SCSEG=1000:F0000
    LIL SAMPLE.OBJ /SS1=1000:F0000 /SS2=:CNT

/TSD<additional-size>

スタックの追加サイズを 10 進数で指定します。STACK コンバイン属性を持つセグメントの合計サイズに、この値が加算されて、SP レジスタの初期値が決定されます。

/U

大文字と小文字を区別します。

オブジェクトファイル中の名前 (セグメント名やグローバル名など) を照合する際、通常 LIL は大文字と小文字の区別を行いませんが、このオプションが指定された場合は区別を行います。

/UE

未解決の外部参照があった場合でも、実行ファイルを作成します。

/Y

16 ビット版の LIL.EXE で、使用するメモリを約 50KB 節約します。メモリ不足エラーが発生する場合に指定します。それでもメモリ不足が解消しない場合は、32 ビット版の LIL32.EXE を使用してください。

[目次]