title: Error - invalid 'asm': operand number missing after %-letter
body: <p>I'm writing inline assembly code in my program. I wrote the below code and compiled the source file, named 'context.c'. But compiler consistently shows this error message.</p>
  
  <pre><code> context.c:42:2: error:
   invalid 'asm': operand number missing after %-letter
      __asm__ __volatile__(
      ^
  </code></pre>
  
  <p>I searched every article that has same error message as me, and I read inline assembly manual very carefully. But I can't find the fault code. Please help!</p>
  
  <pre><code>    void _os_restore_context(addr_t sp){
      __asm__ __volatile__(     //line 42
              "movl %0, %%esp             \n\t"
              "popl %%edi                 \n\t"
              "popl %%esi                 \n\t
              "popl %%ebp                 \n\t
              "addl $4, %%esp #pass esp   \n\t
              "popl %%ebx                 \n\t
              "popl %%edx                 \n\t
              "popl %%ecx                 \n\t
              "popl %%eax                 \n\t
              "popl %eflags               \n\t
              "addl $4, %%esp #pass eip   \n\t
              "popl %%ebp                 \n\t
              "ret                        \n\t
              :: "m" (sp) : "%eax"
          );
      }
  </code></pre>