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

 
 
> Непонятный результат компиляция на 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
Ответов
zltigo
сообщение Apr 25 2007, 13:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dog Pawlowa @ Apr 25 2007, 12:37) *
Я удручен, этот код работает годами на разных платформах. Что не так?

Я удручен не меньше вашего, за Вас и за все "платформы" на которых НЕ СОБЛЮДАЕТСЯ приоритет операции равно (==) перед поразрядным логическим или (|).
Код
    if ((pressed_keys == (kUp | kDn)) && // now these two keys
      ~(kbd_status3 & (kUp | kDn))) //and before it wasn't so


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 25 2007, 14:04
Сообщение #3


Гуру
******

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



Цитата(zltigo @ Apr 25 2007, 13:51) *
Я удручен не меньше вашего, за Вас и за все "платформы" на которых НЕ СОБЛЮДАЕТСЯ приоритет операции равно (==) перед поразрядным логическим или (|)...

Принимаю соболезнования. sad.gif
Ошибка в приоритетах влияла, видимо, на незначительные свойства - неподавленный дребезг комбинации клавиш, который не влиял на пользовательские свойства.

Перепроверил.
Это тот же код для MSP430. Тоже IAR.
kDn=2, kUp=8.
А теперь расскажите мне про последовательность операций... smile.gif

Код
    72                      if ((pressed_keys==kUp+kDn)&&  // now this two keys
     73                          ((~kbd_status3)&(kUp+kDn)))//and before it wasn't so
   \   00008E   F2900A00....         CMP.B   #0xa, &pressed_keys
   \   000094   0D20                 JNE     ??KbdService_6
   \   000096   5E42....             MOV.B   &kbd_status3, R14
   \   00009A   7EE3                 XOR.B   #0xff, R14
   \   00009C   7EB00A00             BIT.B   #0xa, R14
   \   0000A0   0724                 JEQ     ??KbdService_6
     74                          {found_events|=kUpDn;    // set new bit
   \   0000A2   F2D01000....         BIS.B   #0x10, &found_events
     75                          found_events&=~(kUp+kDn);    break; } //reset usual bits
   \   0000A8   F2F0F500....         AND.B   #0xf5, &found_events
   \   0000AE   3041                 RET


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 25 2007, 14:59
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Dog Pawlowa @ Apr 25 2007, 13:04) *
А теперь расскажите мне про последовательность операций... smile.gif
Ищите 10 отличий: kUp+kDn и kUp | kDn


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
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
- - =AVR=   Похоже, что не обработался двухстрочный код (кстат...   Apr 25 2007, 13:08
|- - Dog Pawlowa   Борюсь пока. Последовательность действительно неп...   Apr 25 2007, 13:48
|- - =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
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 22:35
Рейтинг@Mail.ru


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