title: Why is the ELF execution entry point virtual address of the form 0x80xxxxx and not zero 0x0?
body: <p>When executed, program will start running from virtual address 0x80482c0. This address doesn't point to our <code>main()</code> procedure, but to a procedure named <code>_start</code> which is created by the linker.</p>
  
  <p>My Google research so far just led me to some (vague) historical speculations like this:</p>
  
  <blockquote>
    <p>There is folklore that 0x08048000 once was STACK_TOP (that is, the stack grew downwards from near 0x08048000 towards 0) on a port of *NIX to i386 that was promulgated by a group from Santa Cruz, California. This was when 128MB of RAM was expensive, and 4GB of RAM was unthinkable.</p>
  </blockquote>
  
  <p>Can anyone confirm/deny this?</p>