title: how to write __asm__ goto inline assembly
body: <p>I m using a GCC compiler. I want to insert some inline instructions into C. Non-branching instructions are inserted successfully using <strong>__asm__</strong> directive, as follows:</p>
  
  <pre><code>  __asm__ volatile (
              "add %[my_out], %[my_op1], %[my_op2]\n"
              : [my_out] "=&amp;r" (array[3])
              : [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
      );
  </code></pre>
  
  <p>But i cant inset a branch/jump instruction. Compilation gives the following error:</p>
  
  <pre><code>../test.c:5: error: expected '(' before 'goto'
  ../test.c:5: error: expected identifier or '*' before 'volatile'
  </code></pre>
  
  <p>I tried the following code:</p>
  
  <pre><code>unsigned int array[10] = { 0x22, 0x12,0,0,0,0,0,0,0};
  int main() {
  
  
    __asm__ goto volatile (
                  "jp %l[label]\n"
                  : /*no output*/
                  : [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
                  : /*no cobblers*/
                  : label
          );
  
  
    return 0;
  
  label:
  
    __asm__ volatile (
                  "add %[my_out], %[my_op1], %[my_op2]\n"
                  : [my_out] "=&amp;r" (array[3])
                  : [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
          );
  
  
    return 0;
  
  }
  </code></pre>
  
  <p>can you please help in correcting this code?
  Regards</p>