title: Difference between compile time ,load time and execution time?
body: <p>What is the difference between <strong>Compile time</strong>, <strong>Load time</strong> and <strong>Execution time</strong>?</p>
  
  <ul>
  <li>Can someone explain me these three terms in a very simple language?</li>
  <li>It would be easier to understand if you can provide some examples as well.</li>
  </ul>
  
  <p><strong>Context:</strong></p>
  
  <p>Classically, the binding of instructions and data to memory addresses can be done at any step along the way:</p>
  
  <ul>
  <li><p><strong>Compile time</strong>. The compiler translates symbolic addresses to absolute addresses. If you know at compile time where the process will reside in memory, then absolute code can be generated (Static).</p></li>
  <li><p><strong>Load time</strong>. The compiler translates symbolic addresses to relative (relocatable) addresses. The loader translates these to absolute addresses. If it is not known at compile time where the process will reside in memory, then the compiler must generate relocatable code (Static).</p></li>
  <li><p><strong>Execution time</strong>. If the process can be moved during its execution from one memory segment to another, then binding must be delayed until run time. The absolute addresses are generated by hardware. Most general-purpose OSs use this method (Dynamic).</p></li>
  </ul>