Цитата(VDV @ Aug 7 2008, 21:01)

в результате генерится совершенно безобразный код.
умножение производится в 32-х битном виде, хотя явно написано умножение 2-х байтов
включена оптимизация O3
Скомпилировал Ваш код, у меня 16-битное умножение:
Код
mul r30,r28 ; 33 *mulhi3_enh [length = 7]
movw r24,r0
mul r30,r29
add r25,r0
mul r31,r28
add r25,r0
clr r1
Какая версия AVR-GCC?
Цитата(VDV @ Aug 7 2008, 21:01)

и еще:
ткните, плиз, носом где понятно написано как делать ассемблерные вставки.
собственно, непонятно, как из асма взять данные из Сишной переменной и в нужную Сишную переменную отдать
avr-libc-user-manual + исходники avr-libc. Ну и если что в деталях не понятно - вопросы на форумах.
Анатолий.