Domanda

Disassemblaggio di un binario ELF su un sistema x86 di Ubuntu non ho potuto fare a meno di notare che la sezione di codice (.text) inizia l'indirizzo virtuale 0x8048000 e tutti gli indirizzi di memoria più bassi sembrano essere inutilizzati.

Questo sembra essere piuttosto dispendioso e tutti Google salta fuori è o folklore coinvolgono STACK_TOP o la protezione contro dereferenzia null puntatore. L'aspetto quest'ultimo caso, come può essere fissato utilizzando una singola pagina invece di lasciare un vuoto 128MB.

Quindi la mia domanda è questa? - c'è una risposta definitiva sul motivo per cui il layout è stato fissato a questi valori o è solo una scelta arbitraria

È stato utile?

Soluzione

dei linker e caricatori libro:

In sistemi 386, l'indirizzo di base testo è 0x08048000, che permette una ragionevolmente grande pila sotto il testo pur restando sopra indirizzo 0x08000000, permettendo maggior parte dei programmi di utilizzare un'unica tabella delle pagine di secondo livello. (Ricordiamo che sulla 386, ciascuna tabella secondo livello Mappe 0x00400000 indirizzi.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top