title: push 1 less than %ecx to stack
body: <p>I am trying the push onto the stack a value which is <code>one less than %ecx</code>.</p>
  
  <p>So I tried this instruction for that:</p>
  
  <pre><code>pushl $(%ecx - 1)
  </code></pre>
  
  <p>However I get the below error from <code>as</code>.</p>
  
  <pre><code>fact.s: Assembler messages:
  fact.s:49: Error: register value used as expression
  </code></pre>
  
  <p>As a workaround I did the following:</p>
  
  <pre><code>movl %ecx, %edx
  subl $1, %edx
  pushl %edx
  </code></pre>
  
  <p>But is there there a way to do it without using extra registers (<code>%edx</code> in this case) ? And in one instruction ?</p>