title: What is the function of the push / pop instructions used on registers in x86 assembly?
body: <p>When reading about assembler I often come across people writing that they <em>push</em> a certain register of the processor and <em>pop</em> it again later to restore it's previous state.</p>
  
  <ul>
  <li>How can you push a register? Where is it pushed on? Why is this needed?</li>
  <li>Does this boil down to a single processor instruction or is it more complex? </li>
  </ul>