Простой вариант
int16_t arg1, arg2; uint16_t val; arg1 = G_data.channels[a_arg].A; 49e: a8 2f mov r26, r24 4a0: b0 e0 ldi r27, 0x00 ; 0 4a2: aa 0f add r26, r26 4a4: bb 1f adc r27, r27 4a6: fd 01 movw r30, r26 4a8: 31 96 adiw r30, 0x01 ; 1 4aa: 85 e8 ldi r24, 0x85 ; 133 4ac: 91 e0 ldi r25, 0x01 ; 1 4ae: ee 0f add r30, r30 4b0: ff 1f adc r31, r31 4b2: ee 0f add r30, r30 4b4: ff 1f adc r31, r31 4b6: ee 0f add r30, r30 4b8: ff 1f adc r31, r31 4ba: e8 0f add r30, r24 4bc: f9 1f adc r31, r25 4be: 20 81 ld r18, Z 4c0: 31 81 ldd r19, Z+1 ; 0x01 arg2 = G_data.channels[a_arg].B; 4c2: aa 0f add r26, r26 4c4: bb 1f adc r27, r27 4c6: aa 0f add r26, r26 4c8: bb 1f adc r27, r27 4ca: aa 0f add r26, r26 4cc: bb 1f adc r27, r27 4ce: a8 0f add r26, r24 4d0: b9 1f adc r27, r25 4d2: 1a 96 adiw r26, 0x0a ; 10 4d4: 8d 91 ld r24, X+ 4d6: 9c 91 ld r25, X 4d8: 1b 97 sbiw r26, 0x0b ; 11 SQRT_SQ_SUMM_16(arg1, arg2, val); |
Хитрый вариант