title: Using intel inline assembler to code bigint add with carry
body: <p>I would like to do a fast code for adding 64 bit numbers in big ints:</p>
  
  <pre><code>uint64_t ans[n];
  uint64_t a[n], b[n]; // assume initialized values....
  for (int i = 0; i &lt; n; i++)
    ans[i] = a[i] + b[i];
  </code></pre>
  
  <p>but the above does not work with carry.</p>
  
  <p>I saw another question here that suggested using an if statement to check which is elegant:</p>
  
  <pre><code>ans[0] = a[0] + b[0];
  int c = ans[0] &lt; a[0];
  for (int i = 0; i &lt; n; i++) {
    ans[i] = a[i] + b[i] + c;
    c = ans[i] &lt; a[i];
  }
  </code></pre>
  
  <p>However, I would like to learn how to embed inline (intel) assembly and do it faster.
  I am sure there are 64 bit opcodes, the equivalent of:</p>
  
  <pre><code>add eax, ebx
  adc ...
  </code></pre>
  
  <p>but I don't know how to pass parameters to the assembler from the rest of the c++ code.</p>