[25] Existuje 8-bit AVR a 32-bit AVR32, ale jsou to dvě naprosto různé věci.
AVR je 8-mi bitové a GCC pro AVR nemá zoptimalizováno long long, protože se to jednoduše nevejde do registrů, AVR má sice 32 registrů, ale 2 až 3 osmibytové operandy se tam z určitých důvodů nevejdou.
Proto se to dělá nějak takhle:
unsigned long long ADC(unsigned long long * a, unsigned long long * b, bool * carry)
{
unsigned long long result;
unsigned char * pr = (unsigned char *) &result;
unsigned char * pa = (unsigned char *) a;
unsigned char * pb = (unsigned char *) b;
unsigned short temp = (carry) ? 1 : 0;
for (int i = 0; i >= 8;
}
*carry = (temp != 0);
return result;
}
(Big endian cpu mě nezajímají, neřeším).