/BASE

構文:

/BASE:{address | @filename,key}

プログラムのベース・アドレスを設定し,実行形式ファイルまたは DLL の基本場所を置換します (実行形式ファイルでは 0x400000,DLL では 0x10000000)。オペレーティング・システムは,まず指定された,または基本ベース・アドレスにプログラムをロードしようと試みます。そこに十分な空間がなければ,システムはプログラムを再配置します。再配置を禁止するには /FIXED オプションを使用します。

標準ベース・アドレスをテキストボックス (またはコマンド行の address 引数) に入力します。リンカーは指定された数値を,最も近い 64K の倍数に切り上げます。

ベース・アドレスを指定するもう 1 つの方法は,前にアットマーク (@) を付けた filename と,そのファイルに対するキーを使用するというものです。filename は,プログラムが使用するすべての DLL の場所と大きさを含んでいるテキスト・ファイルです。リンカーは,指定されたパス中で filename を探します。または,パスが指定されていない場合には LIB 環境変数で指定されたディレクトリ中で filename を探します。filename 中の個々の行は,1 つの DLL を表しており,次の構文を持っています。

key address size ;comment

key は英数字の文字列で,大文字小文字は区別されません。これは,通常,DLL 名です。key の後には,C 言語表記の 16 進数または 10 進数のベース・アドレスと,最大の大きさが指定されます。この 3 つの引数は空白またはタブで区切られます。指定された大きさが,プログラムが必要とする仮想アドレス空間よりも小さいと,リンカーは警告を発行します。

注釈はセミコロン (;) で指定します。注釈は同じ行にあっても,別の行にあってもかまいません。リンカーはセミコロンから行の終わりまでのすべてのテキストを無視します。次の例は,このようなファイルの一部を示しています。

main0x000100000x08000000; for PROJECT.EXE
one0x280000000x00100000; for DLLONE.DLL
two0x281000000x00300000; for DLLTWO.DLL

これらの行を含んでいるファイルが DLLS.TXT という名前だったとして,次のコマンド例は,この情報を適用します。

link dlltwo.obj  /dll  /base:dlls.txt,two

DLL がアドレス空間中で重複しないようにベース・アドレスを割り付けることで,ページングを減らし,プログラムの性能を向上させることができます。

ベース・アドレスを設定する別の方法として,NAME または LIBRARY モジュール定義文で BASE 引数を使うものがあります。/BASE オプションと /DLL オプションの組み合わせは LIBRARY 文と等価です。モジュール定義文についての詳細は,「モジュール定義ファイル」を参照してください。