Alexander Konovalenko wrote:
There is an "add with carry" instruction on some architectures which enables efficient implementation of arbitrary precision (bignum) integer addition. Is it possible to make gcc generate efficient machine code from pure C or C++ code for bignum addition on those architectures? It looks like the popular libraries like GMP and CLN use hand-coded assembly for that. I wonder if gcc can help rewrite that kind of code in a more portable way.
GCC will use them in most cases. For example, extern unsigned long long a, b, c; int main(void) { c = a + b; return 0; } Produces this with "-O3 -fomit-frame-pointer" main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ecx movl a, %eax movl a+4, %edx addl b, %eax adcl b+4, %edx movl %eax, c xorl %eax, %eax movl %edx, c+4 popl %ecx leal -4(%ecx), %esp ret Tom