Názor ke článku Počítání s přetečením v C od Kolemjdoucí - [25] Existuje 8-bit AVR a 32-bit AVR32, ale...

  • 3. 10. 2014 11:07

    Kolemjdoucí (neregistrovaný)

    [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).