ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
688827
AU08 (24.07.2016 07:51 - 08:07, просмотров: 9167)
Единственный для меня способ заставить IAR корректно умножать 16 на 16 или 16 на 8 разрядов это такой:  unsigned int ADC_filtered = ...; // unsigned long correction_u_long = ADC_filtered; // correction_u_long *= tmp_int; Listing 144 unsigned long correction_u_long = ADC_filtered; \ ??handler_ADC_vect_7: \ 0000011E 01A2 MOVW R21:R20, R5:R4 \ 00000120 E060 LDI R22, 0 \ 00000122 E070 LDI R23, 0 145 // 146 correction_u_long *= tmp_int; \ 00000124 810A LDD R16, Y+2 \ 00000126 811B LDD R17, Y+3 \ 00000128 E020 LDI R18, 0 \ 0000012A E030 LDI R19, 0 \ 0000012C .... RCALL ?L_MUL_L03 \ 0000012E 01A8 MOVW R21:R20, R17:R16 \ 00000130 01B9 MOVW R23:R22, R19:R18 В других случаях также формируется 4 байта (так отображается в в листинге), но их содержимое вместо результата непонятно что. Оптимизация принципиально полностью отключена.
Что такое асимметричный ответ? Это когда о тебе негативно отзываются в комментарии, а ты об авторе этого комментария пишешь хорошо и по-доброму: в некрологе!