title: impossible constraint in 'asm'
body: <p>I'm using third party library which compiled one week ago.<br>
  Today I sat down at the desk again, i pushed build again, then my head blown out.<br>
  I've been shot with this error:  </p>
  
  <blockquote>
    <p>impossible constraint in 'asm'  </p>
  </blockquote>
  
  <p>The code is:</p>
  
  <pre><code>static inline unsigned ROLc(unsigned word, const int i)
  {
     asm ("roll %2,%0"
        :"=r" (word)
        :"0" (word),"I" (i));
     return word;
  }
  </code></pre>
  
  <p>Some mystery things happens...only thing which I'm thinking right now is <em>'WTF?'</em><br>
  Platform Intel CoreDuo with W32 XP on board.</p>
  
  <p>Two additional questions:  </p>
  
  <ol>
  <li>what could destroy my build?</li>
  <li>I suppose that asm syntax is incorrect, so how can i fix that?</li>
  <li>Where can I find 'cool' asm reference (I mean some cpp reference like over pure processor commands list datasheet/manual)</li>
  </ol>
  
  <p>regards
  P.</p>
  
  <p><strong>UPDATE:</strong><br>
  Haha I feel like dump-ass, last week i've installed strawberry perl...which installs and throws gcc on path and my build system takes 'default' compiler....:D<br>
  However i've fixed that using :  </p>
  
  <pre><code>return (word &lt;&lt; i) | (word &gt;&gt; (32 - i));
  </code></pre>