title: Why is the entry point address in my executable 0x8048330? (0x330 being the offset of .text section)
body: <p>I wrote a small program to add two integers and on using <code>readelf -a executable_name</code> it showed the entry point address in elf header as:</p>
  
  <pre class="lang-none prettyprint-override"><code>Entry point address: 0x8048330
  </code></pre>
  
  <p>How does my executable know this address beforehand even before loader loads it in memory?
  <code>elf_format.pdf</code> says this member gives the virtual address to which the system first transfers control, thus starting the process. Can anyone please explain what is the meaning of this statement and what is the meaning of virtual address here? </p>
  
  <p>Also let me know, from where the executable file gets the value of <code>0x8048330</code> as entry point address. Just for cross check I compiled another program and for that also, the entry point address remains the same value <code>0x8048330</code> (offset of <code>.text</code> section being <code>0x330</code> in both the cases).</p>