|
|
  |
scmRTOS и IAR EWAVR 4.30 |
|
|
|
Jun 17 2007, 14:18
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(IgorKossak @ Jun 16 2007, 17:42)  Скомпилировал сабж и, в отличие от версии IAR 4.21, получил несколько ремарок, касающихся кастинга (Pe1375,Pa091). Чтобы глаза не мозолили, просто запретил выдавать диагностику на эти ремарки. Но сомнения гложат, ведь не спроста же они появились. Новая версия IAR стала строже ко всему относиться. Каким образом можно корректно обойти эти проблемы, чтобы не напороться на неприятности с переносимостью?
Если посмотрите на код, на который выдаются эти ремарки, то увидите, что это глубоко платформенно- и компиляторо-зависимые вещи, связанные с переключением указателя стека на стек прерываний: Код ABS_WORD(28) = reinterpret_cast<word>(__segment_end("CSTACK")); SP = reinterpret_cast<word>(__segment_end("RSTACK")) - 1; Т.е. никуда этот код переноситься не будет. Да и само наличие страшных reinterpret_cast указывает на потенциально опасное место, но в данном случае иного пути достчить цели как-то не видно. Что касается замечания Pa091, то для меня это тоже загадка, что тут компилятору не понравилось. Тем более, что предыщущая строка по сути представляет собой точно такое же выражение, но на него ругани нет.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 18 2007, 03:22
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(IgorKossak @ Jun 18 2007, 01:46)  Далее если будет не лень обрамлю проблемные строки соответствующими прагмами. ... еще можно сделать дифф и положить в Tracker на sf.net, в раздел Patches  . PS: IgorKossak, svn в данном проекте используется?
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Jun 18 2007, 05:18
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(IgorKossak @ Jun 18 2007, 02:46)  Посмотрел полученный код и, несмотря на ругань, всё получается правильно при любой оптимизации. Да там и нет причин, чтоб не работало.  Цитата(IgorKossak @ Jun 18 2007, 02:46)  Так что пока запретил выдавать эти сообщения во всем проекте. Далее если будет не лень обрамлю проблемные строки соответствующими прагмами. Когда-то когда ремарки только появились, я тоже начал ими пользоваться, надеясь и полагая, что они помогут писать более логичный и безопасный код, но очень быстро от них отказался по причине того, что частенько замечания выдавались не по делу (как и рассматриваемом случае), зато более серьезные места оставлены без внимания. Например, в контексте scmRTOS: есть момент, когда в конструкторах объектов производится запись в таблицу процессов (регистрация процессов в ядре), таблица процессов размещена в объекте Kernel, который сам является объектом класса, у которого тоже есть конструктор. В виду всего этого существует потенциальная опасность зависимости от порядка инициализации, т.к. вызов конструкторов из разных единиц компиляции неопределен. И неприятности могли бы быть в полный рост, если бы объект Kernel имел не static storage duration и/или производил бы обращение (инициализацию) к таблице процессов в конструкторе. Но ни того, ни другого там нет, таблица существует статически, в конструкторе объекта Kernel к ней обращений не производится, поэтому проблем нет. Но момент заслуживает самого серьезного внимания. Тем не менее компилятор из состава VisualDSP++ v4.5 (для Blackfin'а) этот момент засек и выдает соответствующее предупреждение (даже не замечание). А вот IAR этого не замечает даже на уровне ремарок. Поэтому я бы рекомендовал сильно не надеяться на IAR'овские ремарки и придавать им большого значения. Имхо, самый правильный способ их использования - включать иногда, дабы посмотреть, что он там нашел, и, если момент застуживает внимания, пофиксить его. Но при постоянной работе выключать их совсем чтобы глаза не мозолили и не мешали наблюдать за более серъезными сообщениями.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 18 2007, 07:48
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(spf @ Jun 18 2007, 06:22)  IgorKossak,[/b] svn в данном проекте используется? И в данном и во всех остальных по умолчанию. В привычку, знаете ли, вошло. Цитата(dxp @ Jun 18 2007, 08:18)  Поэтому я бы рекомендовал сильно не надеяться на IAR'овские ремарки и придавать им большого значения. Имхо, самый правильный способ их использования - включать иногда, дабы посмотреть, что он там нашел, и, если момент застуживает внимания, пофиксить его. Но при постоянной работе выключать их совсем чтобы глаза не мозолили и не мешали наблюдать за более серъезными сообщениями. Так обычно и делаю. Вот только лишняя возня иногда напрягает.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|