title: Assembler Error: expression too complex
body: <p>I'm trying to do a simple inline asm command in <code>C</code> and compile it with gcc. I want to push the variable <code>num</code> to the stack:</p>
  
  <pre><code>asm (
      "push %0"
      :          //output
      : "r"(num) //input
      :          //clobber
  );
  </code></pre>
  
  <p>The above is generating the error:</p>
  
  <pre><code>Error: expression too complex -- `push r3'
  </code></pre>
  
  <p>I'm following <a href="https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#toc3" rel="noreferrer">this tutorial</a> and I found nothing about the <code>push</code> command.</p>
  
  <p>I also tried:</p>
  
  <pre><code>asm ( "push %num" ); //Assembler Error: expression too complex -- `push %num'
  </code></pre>
  
  <p>and:</p>
  
  <pre><code>asm ( "push %[num]" ); //gcc error: undefined named operand 'num'
  </code></pre>
  
  <p>But none worked.</p>
  
  <p><strong>edit:</strong></p>
  
  <p>I'm using this compiler: <a href="https://launchpad.net/linaro-toolchain-binaries" rel="noreferrer">arm-linux-gnueabihf-gcc</a></p>