title: C and assembly __asm doesn't work
body: <p>I found this piece of code to put the stack pointer into EAX register(It should be the register used by "return" in C)</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  unsigned long get_sp(){
      unsigned long stp;
      __asm{
          mov
          eax, esp
          }
  }
  
  void main(void){
  printf("\n0x%x", get_sp());
  }
  </code></pre>
  
  <p>I tried it with Geany but it doesn't works!!
  Then I follow the compiler log and I changed the code in this way:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  unsigned long get_sp(void);
  
  int main(void){
  printf("\n0x%ld", get_sp());
  return 0;
  }
  
  
  unsigned long get_sp(void){
      unsigned long stp;
      __asm{
          mov eax, esp
      }
  }
  </code></pre>
  
  <p>this time I have no problems with the main but the other function is a tragedy!!!
  It doesn't recognize __asm.
  unknown type name 'mov'....
  unused variable 'eax'...
  It seems like it wants __asm() instead of __asm{}, like a normal call of a function.
  Somebody can help me?
  PS
  I have debian 64....it can have some problems with the 64 architecture??</p>