[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
при работе с long в зависимости от кода ( сложности, навороченности и т.д. ) даже без структур компилятор неожиданно начинает использовать регистры R16, R18, R18, R19, т.е. пропускает R17. Это происходило на операциях сдвига, при разбиении числа на байты:
unsigned long a;
unsigned char L1,L2,H1,H2;
L1=a & 0xFF; // здесь используется R16
L2|=(a>>8) & 0xFF; // здесь используется R18 !!!
H1|=(a>>16) & 0xFF; // здесь используется снова R18 !!!
H2|=(a>>24) & 0xFF; // здесь используется R19
результат - сами понимаете
ЭТО я видел собственными глазами в листинге
пришлось сделать объединение и им разбить байт.
E-mail: info@telesys.ru