/BASE
(Alamat dasar)
Menentukan alamat dasar untuk suatu program.
Sintaks
/BASE:
{address
[,
size
] |@
filename
,
key
}
Keterangan
Catatan
Untuk alasan keamanan, Microsoft menyarankan Anda menggunakan opsi alih-alih /DYNAMICBASE
menentukan alamat dasar untuk executable Anda. /DYNAMICBASE
menghasilkan gambar yang dapat dieksekusi yang dapat diabas secara acak pada waktu pemuatan dengan menggunakan fitur pengacakan tata letak ruang alamat (ASLR) Windows. Opsi /DYNAMICBASE
aktif secara default.
Opsi /BASE
linker mengatur alamat dasar untuk program. Ini mengambil alih lokasi default untuk file EXE atau DLL. Alamat dasar default untuk file EXE 0x400000 untuk gambar 32-bit atau 0x140000000 untuk gambar 64-bit. Untuk DLL, alamat dasar default 0x10000000 untuk gambar 32-bit atau 0x180000000 untuk gambar 64-bit. Pada sistem operasi yang tidak mendukung pengacakan tata letak ruang alamat (ASLR), atau ketika /DYNAMICBASE:NO
opsi diatur, sistem operasi pertama kali mencoba memuat program pada alamat dasar yang ditentukan atau default. Jika ruang tidak cukup tersedia di sana, sistem akan merelokasi program. Untuk mencegah relokasi, gunakan /FIXED
opsi .
Linker mengeluarkan kesalahan jika address
bukan kelipatan 64K. Anda dapat secara opsional menentukan ukuran program. Linker mengeluarkan peringatan jika program tidak dapat sesuai dengan ukuran yang Anda tentukan.
Pada baris perintah, cara lain untuk menentukan alamat dasar adalah dengan menggunakan file respons alamat dasar. File respons alamat dasar adalah file teks yang berisi alamat dasar dan ukuran opsional dari semua DLL yang digunakan program Anda, dan kunci teks unik untuk setiap alamat dasar. Untuk menentukan alamat dasar dengan menggunakan file respons, gunakan tanda (@
) diikuti dengan nama file respons, filename
, diikuti dengan koma, lalu key
nilai untuk alamat dasar yang akan digunakan dalam file. Linker mencari filename
di jalur yang ditentukan, atau jika tidak ada jalur yang ditentukan, dalam direktori yang ditentukan dalam LIB
variabel lingkungan. Setiap baris mewakili filename
satu DLL dan memiliki sintaks berikut:
key
address
[size
];
comment
key
adalah string karakter alfanumerik dan tidak peka huruf besar/kecil. Biasanya nama DLL, tetapi itu tidak diperlukan. key
diikuti oleh basis address
dalam bahasa C, heksadesimal, atau notasi desimal dan maksimum size
opsional . Ketiga argumen dipisahkan oleh spasi atau tab. Linker mengeluarkan peringatan jika yang ditentukan size
kurang dari ruang alamat virtual yang diperlukan oleh program. comment
ditentukan oleh titik koma (;
) dan dapat berada di baris yang sama atau terpisah. Linker mengabaikan semua teks dari titik koma ke akhir baris. Contoh ini menunjukkan bagian dari file seperti itu:
main 0x00010000 0x08000000 ; for PROJECT.exe
one 0x28000000 0x00100000 ; for DLLONE.DLL
two 0x28100000 0x00300000 ; for DLLTWO.DLL
Jika file yang berisi baris ini disebut DLLS.txt, perintah contoh berikut menerapkan informasi ini:
link dlltwo.obj /dll /base:@dlls.txt,two
Cara lain untuk mengatur alamat dasar adalah dengan menggunakan BASE
argumen dalam pernyataan NAME
atau LIBRARY
. Opsi /BASE
dan /DLL
bersama-sama setara LIBRARY
dengan pernyataan.
Untuk mengatur opsi linker ini di lingkungan pengembangan Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Tingkat Lanjut Linker>Properti>Konfigurasi.
Ubah properti Alamat Dasar.
Untuk menyetel opsi linker ini secara terprogram
- Lihat BaseAddress.