Frage

Bemerken eines Elf -Binärs auf einem Ubuntu X86 -System Ich konnte nicht anders, als zu bemerken, dass der Abschnitt Code (.text) aus der virtuellen Adresse 0x8048000 beginnt und alle niedrigeren Speicheradressen nicht verwendet werden.

Dies scheint eher verschwenderisch zu sein und alles, was Google auftaucht, ist entweder Folklore mit Stack_top oder Schutz gegen Null-Zeiger-Dereferenzen. Der letztere Fall sieht so aus, als ob es durch die Verwendung einer einzelnen Seite fixiert werden kann, anstatt einen 128 -MB -Lücken zu hinterlassen.

Meine Frage ist also: Gibt es eine endgültige Antwort darauf, warum das Layout auf diese Werte festgelegt wurde oder ist es nur eine willkürliche Wahl?

War es hilfreich?

Lösung

Von dem Linker und Lader Buchen:

Auf 386 Systemen beträgt die Textbasisadresse 0x08048000, was einen einigermaßen großen Stapel unterhalb des Textes ermöglicht, während sie weiterhin über der Adresse 0x08000000 bleiben, sodass die meisten Programme eine einzelne Seitentabelle auf der zweiten Ebene verwenden können. (Erinnern Sie sich daran, dass jede Tabelle auf der zweiten Stufe auf den 386-Adresse 0x00400000 Adressen kartiert.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top