Pourquoi est-ce que l'ELFE l'exécution de point d'entrée d'adresse virtuelle de la forme 0x80xxxxx et pas zéro 0x0?

Lorsqu'il est exécuté, le programme va commencer à courir à partir d'adressage virtuel 0x80482c0. Cette adresse n'est pas le point à notre main() procédure, mais à une procédure nommée _start qui est créé par l'éditeur de liens.

Mon Google recherche à ce jour m'a conduit à certains (vague) historique des spéculations comme ceci:

Il est du folklore que 0x08048000 était une fois STACK_TOP (qui est, la pile grandit vers le bas à partir de près de 0x08048000 vers 0) sur un port de *NIX pour i386 et qui a été promulguée par un groupe de Santa Cruz, en Californie. C'est alors que 128 MO de RAM était cher, et 4 go de RAM était impensable.

Quelqu'un peut confirmer ou nier cela?

Si 0x08048000 jamais été STACK_TOP, c'était très il y a longtemps. Ce dernier est TASK_SIZE tout le chemin à 2.0.40.

OriginalL'auteur Michael L. | 2010-02-02