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

Познающий...
     
Группа: Свой
Сообщений: 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. Вопрос: кто тупит?
--------------------
Выбор.
|
|
|
|
|
 |
Ответов
|
Apr 16 2014, 06:06
|

Познающий...
     
Группа: Свой
Сообщений: 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'ами.
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
haker_fox Переменная типа bool не инвертируется Apr 16 2014, 05:33 Сергей Борщ Цитата(haker_fox @ Apr 16 2014, 08:33) Во... Apr 16 2014, 05:43    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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|