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

 
 
> Нарвался на глючище в ИАРе. Негодую... :-о
Dr.Alex
сообщение Jul 3 2015, 17:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



В цикле проверяется значение элемента структуры dev_state.

Как видите, ИАР 7.40 загружает содержимое элемента в R0, потом сравнивает R0 с тройкой (это USBD_STATE_CONFIGURED),
а на следующем цикле прыгает НЕ НА ЗАГРУЗКУ R0 (LDRB.W R0, ...), а сразу на сравнение (CMP R0, #3)!!!

Удивляюсь, что у меня всё остальное вообще работает, с таким-то качеством компилёжки.

Конечно, если снизить оптимизацию или объявить элемент dev_state как volatile, то компилит правильно, но это же не решение! :-о :-о

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jul 3 2015, 18:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



снизойдите скажите ответ, сил нет понять где сглупил....
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jul 3 2015, 18:22
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(Golikov A. @ Jul 3 2015, 21:18) *
снизойдите скажите ответ, сил нет понять где сглупил....


ОК.

Если компилятор считает, что переменная не меняется, он не станет её проверять в цикле.

А здесь проверяет (цикл есть), но делает это неправильно, потому что после сравнения прыгает не на загрузку регистра, а сразу на его сравнение.
То есть, сгенерённый код бессмыслен.

А нужно ли было объявлять элемент структуры (или всю структуру) как volatile или нет, это уже другой вопрос, и он к писателям STM (как вы могли заметить, это Cube).
Go to the top of the page
 
+Quote Post
alag57
сообщение Jul 3 2015, 18:55
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



Цитата(Dr.Alex @ Jul 3 2015, 23:22) *
Если компилятор считает, что переменная не меняется, он не станет её проверять в цикле.

Компилятор проверяет не переменную, а значение регистра R0, который наверняка где-то
объявлен как volatile, как и все регистры IO.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jul 3 2015, 18:58
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(alag57 @ Jul 3 2015, 21:55) *
Компилятор проверяет не переменную, а значение регистра R0, который наверняка где-то
объявлен как volatile, как и все регистры IO.


:-))))))))))))))))) Вы начинающий, так что не стану ругаться.. :-о
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dr.Alex   Нарвался на глючище в ИАРе. Негодую... :-о   Jul 3 2015, 17:59
- - krux   ЦитатаВ цикле проверяется значение элемента структ...   Jul 3 2015, 18:09
|- - Dr.Alex   Цитата(krux @ Jul 3 2015, 21:09) или вы в...   Jul 3 2015, 18:13
- - Golikov A.   Цитатаонечно, если снизить оптимизацию или объявит...   Jul 3 2015, 18:13
|- - Dr.Alex   Цитата(Golikov A. @ Jul 3 2015, 21:13) Эт...   Jul 3 2015, 18:16
|- - krux   Цитата(Golikov A. @ Jul 3 2015, 21:13) В ...   Jul 3 2015, 18:20
- - Golikov A.   докторишка как всегда в своем репертуаре, отдохнул...   Jul 3 2015, 18:15
||- - alag57   Цитата(Dr.Alex @ Jul 3 2015, 23:58) :-)))...   Jul 3 2015, 19:01
||- - Dr.Alex   Цитата(alag57 @ Jul 3 2015, 22:01) Да, ле...   Jul 3 2015, 19:53
|- - scifi   Цитата(Dr.Alex @ Jul 3 2015, 21:22) А зде...   Jul 3 2015, 20:25
- - Golikov A.   ЦитатаТо есть, сгенерённый код бессмыслен. Ну тогд...   Jul 3 2015, 18:26
|- - Dr.Alex   Цитата(Golikov A. @ Jul 3 2015, 21:26) Ну...   Jul 3 2015, 18:29
- - Golikov A.   одну ошибку я определенно сегодня сделал....   Jul 3 2015, 18:35
- - Aner   Эти ваши какашки из куба, такого там оч много. Эта...   Jul 3 2015, 20:05
- - SSerge   Цитата(Dr.Alex @ Jul 4 2015, 00:59) Конеч...   Jul 3 2015, 20:19
|- - Dr.Alex   Цитата(SSerge @ Jul 3 2015, 23:19) Это им...   Jul 3 2015, 20:37
|- - scifi   Цитата(Dr.Alex @ Jul 3 2015, 23:37) Он им...   Jul 3 2015, 20:46
|- - Dr.Alex   Цитата(scifi @ Jul 3 2015, 23:46) Спасибо...   Jul 3 2015, 20:54
|- - Dr.Alex   Поскольку начинает происходить то же что и всегда ...   Jul 3 2015, 21:03
|- - IgorKossak   Цитата(Dr.Alex @ Jul 4 2015, 00:03) Поско...   Jul 4 2015, 08:23
- - scifi   Цитата(Dr.Alex @ Jul 3 2015, 23:54) Где я...   Jul 3 2015, 21:01


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 11:19
Рейтинг@Mail.ru


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