|
Нарвался на глючище в ИАРе. Негодую... :-о |
|
|
|
Jul 3 2015, 17:59
|
Профессионал
    
Группа: Свой
Сообщений: 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, то компилит правильно, но это же не решение! :-о :-о
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jul 3 2015, 18:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863

|
Цитата(Golikov A. @ Jul 3 2015, 21:18)  снизойдите скажите ответ, сил нет понять где сглупил.... ОК. Если компилятор считает, что переменная не меняется, он не станет её проверять в цикле. А здесь проверяет (цикл есть), но делает это неправильно, потому что после сравнения прыгает не на загрузку регистра, а сразу на его сравнение. То есть, сгенерённый код бессмыслен.А нужно ли было объявлять элемент структуры (или всю структуру) как volatile или нет, это уже другой вопрос, и он к писателям STM (как вы могли заметить, это Cube).
|
|
|
|
|
Jul 3 2015, 18:55
|
Частый гость
 
Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355

|
Цитата(Dr.Alex @ Jul 3 2015, 23:22)  Если компилятор считает, что переменная не меняется, он не станет её проверять в цикле. Компилятор проверяет не переменную, а значение регистра R0, который наверняка где-то объявлен как volatile, как и все регистры IO.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|