реклама на сайте
подробности

 
 
> Непонятный результат компиляция на IARe, Подскажите, в чем я не прав
Dog Pawlowa
сообщение Apr 25 2007, 12:37
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Смешно, что вчера все работало.

Подрабатывает обработка одновременного нажатия двух клавиш

Код
    if ((pressed_keys == kUp | kDn) && // now these two keys
      ~(kbd_status3 & (kUp | kDn))) //and before it wasn't so
    {
      found_events |= kUpDn; // set new bit
      found_events &= ~(kUp | kDn); //reset usual bits
    }


Откомпилировалось в это

Прикрепленное изображение


Я удручен, этот код работает годами на разных платформах. Что не так?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Guest_=AVR=_*
сообщение Apr 25 2007, 13:08
Сообщение #2





Guests






Похоже, что не обработался двухстрочный код (кстати, не вижу знака конкатенации). Попробуй так же, но в одной строке:

Код
    if ((pressed_keys == kUp | kDn) &&  ~(kbd_status3 & (kUp | kDn)))    {
      found_events |= kUpDn; // set new bit
      found_events &= ~(kUp | kDn); //reset usual bits
    }
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 25 2007, 13:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Борюсь пока.
Последовательность действительно неправильна, двухстрочный код не влияет.
Влияет сложная формула, от нее компилятор клинит - так что ищу путь попроще, разбивая формулу на части (помогая компилятору в стиле Князева).
Обычно я стараюсь реже смотреть ассемблерный код, но вот это удивило:

Код
     76              found_events |= kUpDn;                            // set new bit
   \   000000E0   ....               LDI     R30, LOW(found_events)
   \   000000E2   ....               LDI     R31, (found_events) >> 8
   \   000000E4   8100               LD      R16, Z
   \   000000E6   6100               ORI     R16, 0x10
   \   000000E8   8300               ST      Z, R16
     77              found_events &= ~(kUp | kDn);                     //reset usual bits
   \   000000EA   ....               LDI     R30, LOW(found_events)                     !!!!!!!!!!!!!!!!!!!!!!!!!
   \   000000EC   ....               LDI     R31, (found_events) >> 8                   !!!!!!!!!!!!!!!!!!!!!!!!
   \   000000EE   8100               LD      R16, Z                                             !!!!!!!!!!!!!!!!!!!!!!!
   \   000000F0   7F09               ANDI    R16, 0xF9
   \   000000F2   8300               ST      Z, R16
   \   000000F4   9508               RET


Из шести команд три тупо дублируются. Оптимизация включена LOW. Хороший маркетинговый ход - эти уровни оптимизации.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dog Pawlowa   Непонятный результат компиляция на IARe   Apr 25 2007, 12:37
- - wodya   Код if ((pressed_keys == kUp | kDn) ...   Apr 25 2007, 12:59
|- - =GM=   [DELETED] Совсем не по теме.   Apr 25 2007, 13:54
|- - IgorKossak   Цитата(Dog Pawlowa @ Apr 25 2007, 13:48) ...   Apr 25 2007, 13:56
- - IgorKossak   Двухстрочные коды, даже с комментариями, в ИАРе об...   Apr 25 2007, 13:41
- - =GM=   Цитата(Dog Pawlowa @ Apr 25 2007, 08:37) ...   Apr 25 2007, 13:45
|- - Dog Pawlowa   Цитата(=GM= @ Apr 25 2007, 13:45) Мне каж...   Apr 25 2007, 13:58
- - Igor26   ЦитатаЗнак продолжения строки А как он указывается...   Apr 25 2007, 13:51
|- - IgorKossak   Цитата(Igor26 @ Apr 25 2007, 13:51) А как...   Apr 25 2007, 14:02
- - zltigo   Цитата(Dog Pawlowa @ Apr 25 2007, 12:37) ...   Apr 25 2007, 13:51
|- - Dog Pawlowa   Цитата(zltigo @ Apr 25 2007, 13:51) Я удр...   Apr 25 2007, 14:04
|- - Сергей Борщ   Цитата(Dog Pawlowa @ Apr 25 2007, 13:04) ...   Apr 25 2007, 14:59
|- - Dog Pawlowa   Цитата(Сергей Борщ @ Apr 25 2007, 14:59) ...   Apr 25 2007, 15:02
|- - Сергей Борщ   Цитата(Dog Pawlowa @ Apr 25 2007, 14:02) ...   Apr 26 2007, 02:19
- - defunct   Сравните также ( (~kbd_status3) & (kUp+kDn) )...   Apr 26 2007, 00:40


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016