Pastikan program dimuat di bawah 4 GB menggunakan --image-base di Linux

Saya mencoba memastikan biner tertentu dimuat dalam memori fisik 4 GB. Dalam opsi LD saya melihat --image-base. Dokumentasinya mengatakan: [Opsi ini khusus untuk port linker yang ditargetkan i386 PE]

Di Linux, jika saya menggunakan opsi ini, dikatakan opsi tidak dikenal '--image-base'.

Apakah ada cara untuk memastikan biner tertentu dimuat di bawah 4 GB di Linux?


person asmprogrammer    schedule 13.07.2012    source sumber


Jawaban (1)


Saya mencoba memastikan biner tertentu dimuat dalam memori fisik 4 GB.

Dengan asumsi Anda berbicara tentang kode tingkat pengguna (aplikasi), dan bukan tentang kernel Linux, Anda dapat memastikan tidak ada apa pun tentang memori fisik. Anda hanya dapat memastikan sesuatu tentang memori virtual.

Pertanyaan Anda juga tidak masuk akal jika Anda menggunakan sistem 32-bit, karena semua memori di bawah 4GB pada sistem tersebut.

Oleh karena itu, pertanyaan Anda tampaknya adalah: "bagaimana cara menautkan file yang dapat dieksekusi pada sistem Linux 64-bit, sehingga memuat di bawah 0x100000000?"

Dengan asumsi Anda menggunakan x86_64 jawabannya adalah: opsi tautan default sudah melakukan itu untuk executable utama (meskipun tidak untuk perpustakaan bersama), jadi Anda tidak perlu melakukan sesuatu yang istimewa. Jika Anda ingin semua kode dimuat di bawah batas 4 GB, tautkan aplikasi Anda dengan tanda -static (namun berhati-hatilah: melakukan hal ini mungkin tidak berhasil karena berbagai alasan, dan juga menerapkan pembatasan lisensi pada biner Anda) .

person Employed Russian    schedule 15.07.2012
comment
Maaf jika saya tidak spesifik dalam jenis program atau jenis arsitekturnya. Berikut beberapa detailnya: 1. Saya mencoba memuat modul kernel (driver) dengan memori fisik 4 GB. 2. Saya mencoba ini pada kernel PAE 32-bit di mana alamat pemuatan modul bisa antara 4 GB hingga 5 GB (walaupun sistem memiliki 4GB). Hal ini dilakukan oleh BIOS untuk memetakan ulang memori dari 3 GB menjadi 4 GB. - person asmprogrammer; 16.07.2012