title: x64 - Why still use 'call'?
body: <p>In recent windows binaries for example (win 8.1 x64) and programs compiled with VC++ 'call' instruction are still present. Isn't a faster and better way to store the return address into registers, the same way as most of the arguments instead of still using stack?</p>
  
  <p>What I mean:</p>
  
  <p>Function:</p>
  
  <pre><code>func:
  
  ; do something
  
  jmp r8
  </code></pre>
  
  <p>Instance of it:</p>
  
  <pre><code>lea r8, [rip + tmp_1 - tmp_0] ; or rip + 'jmp func' size
  
  tmp_0:
  
  jmp func
  
  tmp_1:
  
  ; rest of code
  </code></pre>