title: x86_64 - Assembly - loop conditions and out of order
body: <h3>I am <em>not</em> asking for a benchmark.</h3>
  <p>(<em>If that was the case, I would have done it myself.</em>)</p>
  <hr />
  <p>My question:</p>
  <p>I tend to avoid the indirect/index addressing modes for convenience.</p>
  <p>As a replacement, I often use immediate, absolute or register addressing.</p>
  <p>The code:</p>
  <pre><code>; %esi has the array address. Say we iterate a doubleword (4bytes) array.
  ; %ecx is the array elements count
  (0x98767) myloop:
      ... ;do whatever with %esi
      add $4, %esi
      dec %ecx
      jnz 0x98767;
  </code></pre>
  <p>Here, we have a serialized combo(dec and jnz) which prevent proper out of order execution (dependency).</p>
  <p>Is there a way to avoid that / break the dep? (I am not an assembly expert).</p>