ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
221914
cvv (15.11.2010 14:45, просмотров: 4206)
Обьясните чего нагенерил gcc: 
    uint8_t a, b;
...
    a = PORTA;
     a2c:   82 b1           in  r24, 0x02   ; 2
    b = PORTC;
     a2e:   88 b1           in  r24, 0x08   ; 8

    a = (a>>SHIFT_FACTOR)&0x0F;
    b = (b>>SHIFT_FACTOR)&0x0F;

    raw.data[0] = EAC_ok;
     a30:   8a ea           ldi r24, 0xAA   ; 170
     a32:   8a 83           std Y+2, r24    ; 0x02

...
    raw.data[4] = (a<<4) & b;
     a44:   1e 82           std Y+6, r1 ; 0x06
я не понимаю почему значения вычитанные из регистров PORTA, PORTC выбрасываются и результат берется из регистра r1 который этой функцией не устанавливается ни в какое значение. Это бага gcc? какой может быть workaround?
wbr Vitaly