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

 
 
> Переменная типа bool не инвертируется, Но если заменить на if, то всё работает)
haker_fox
сообщение Apr 16 2014, 05:33
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Добрый день!
IAR 6.40, ARM.

Это не работает, переменная не меняет своё значение при каждом вызове функции
CODE
void CSmcsCh::ledTask()
{
    ledState = !ledState;
    CSmcsChHal::turnLed( ledState );
}

А это работает
CODE
void CSmcsCh::ledTask()
{    
    if( ledState )
    {
        ledState = false;
    }
    else
    {
        ledState = true;
    }
    CSmcsChHal::turnLed( ledState );
}


ledState объявлена как приватный члена класса CSmcsCh.

Вопрос: кто тупит? biggrin.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Apr 16 2014, 06:06
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



1-й случай.
CODE
     55          void CSmcsCh::ledTask()
     56          {
     57              ledState = !ledState;
   \                     _ZN7CSmcsCh7ledTaskEv:
   \   00000000   0xF890 0x103C      LDRB     R1,[R0, #+60]
   \   00000004   0xF081 0x0101      EOR      R1,R1,#0x1
   \   00000008   0xF880 0x103C      STRB     R1,[R0, #+60]
     58          /*    
     59              if( ledState )
     60              {
     61                  ledState = false;
     62              }
     63              else
     64              {
     65                  ledState = true;
     66              }*/
     67              CSmcsChHal::turnLed( ledState );
   \   0000000C   0x4608             MOV      R0,R1
   \   0000000E   0x....             B.N      _ZN10CSmcsChHal7turnLedEb
     68          }


2-й случай.
CODE
     55          void CSmcsCh::ledTask()
     56          {
     57          //    ledState = !ledState;
     58              
     59              if( ledState )
   \                     _ZN7CSmcsCh7ledTaskEv:
   \   00000000   0xF890 0x203C      LDRB     R2,[R0, #+60]
   \   00000004   0x1E51             SUBS     R1,R2,#+1
   \   00000006   0x4189             SBCS     R1,R1,R1
   \   00000008   0x0FC9             LSRS     R1,R1,#+31
   \   0000000A   0xF880 0x103C      STRB     R1,[R0, #+60]
     60              {
     61                  ledState = false;
     62              }
     63              else
     64              {
     65                  ledState = true;
     66              }
     67              CSmcsChHal::turnLed( ledState );
   \   0000000E   0xF890 0x003C      LDRB     R0,[R0, #+60]
   \   00000012   0x....             B.N      _ZN10CSmcsChHal7turnLedEb
     68          }


Сам я в асме не силён, но если мне память не изменяет, то такое поведение ИАРа у меня не в первой. Но раньше как-то не задевало, и обходил это if'ами.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- haker_fox   Переменная типа bool не инвертируется   Apr 16 2014, 05:33
- - Сергей Борщ   Цитата(haker_fox @ Apr 16 2014, 08:33) Во...   Apr 16 2014, 05:43
|- - Сергей Борщ   Я вижу инвертирование в обоих случаях. И не работа...   Apr 16 2014, 06:34
|- - haker_fox   QUOTE (Сергей Борщ @ Apr 16 2014, 15:34) ...   Apr 16 2014, 06:41
|- - Сергей Борщ   Цитата(haker_fox @ Apr 16 2014, 09:41) Не...   Apr 16 2014, 06:52
|- - haker_fox   QUOTE (Сергей Борщ @ Apr 16 2014, 15:52) ...   Apr 16 2014, 07:03
- - scifi   Нормально выглядит код. EOR - это exclusive OR, то...   Apr 16 2014, 06:24
- - Alex11   А какое значение переменной было до входа в этот к...   Apr 16 2014, 06:26
- - haker_fox   Переменная никак не инициализировалась...( Сейчас ...   Apr 16 2014, 06:29
- - megajohn   Цитата(haker_fox @ Apr 16 2014, 09:33) Во...   Apr 16 2014, 07:29
|- - Сергей Борщ   Цитата(megajohn @ Apr 16 2014, 10:29) есл...   Apr 16 2014, 07:42
|- - scifi   Цитата(Сергей Борщ @ Apr 16 2014, 11:42) ...   Apr 16 2014, 08:38
|- - haker_fox   QUOTE (scifi @ Apr 16 2014, 17:38) то код...   Apr 16 2014, 12:03
|- - scifi   Да не обижайтесь так. Это я фигурально выразился, ...   Apr 16 2014, 12:10
|- - AHTOXA   Вот в тему ссылочка.   Apr 16 2014, 17:02
- - haker_fox   QUOTE (scifi @ Apr 16 2014, 21:10) Да не ...   Apr 16 2014, 23:23


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:45
Рейтинг@Mail.ru


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