ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
314830
Toчкa oпopы (14.03.2012 10:53, просмотров: 3279)
0x7F. Чегой-то ГЦЦ (сборка 2010 года от klen для AVR) выкинул проверку условия? Ориджин (насыщение переменной temp2, т.е., что-бы при декременте она не перескочила на +127 из-за переполнения): ..... char temp2; ..... ..... do { temp1 = UART_getc(); ..... ..... if ((char)(temp1 == 'd')) { set_sensor(-1); if ((char)(temp2 > -127)) temp2--; } } while ((char)(temp1 != 0x0D)); ..... ..... Листинг и ассемблер (temp2 компилятор уложил в регистр R15, temp1 - R24): do { temp1 = UART_getc(); 178: 0e 94 9a 00 call 0x134 ; 0x134 <UART_getc> ..... ..... if ((char)(temp1 == 'd')) { 190: 84 36 cpi r24, 0x64 ; 100 192: 29 f4 brne .+10 ; 0x19e <adjust_sensor+0x42> set_sensor(-1); 194: 8f ef ldi r24, 0xFF ; 255 196: 0e 94 78 00 call 0xf0 ; 0xf0 <set_sensor> if ((char)(temp2 > -127)) temp2--; 19a: fa 94 dec r15 19c: ed cf rjmp .-38 ; 0x178 <adjust_sensor+0x1c> } } while ((char)(temp1 != 0x0D)); 19e: 8d 30 cpi r24, 0x0D ; 13 1a0: 59 f7 brne .-42 ; 0x178 <adjust_sensor+0x1c> Просто интересно, чего я недопонял.
Заказать импортные ЭК - https://shop.fulcrum.ru/buy