|
Keil Оптимизатор |
|
|
|
 |
Ответов
|
Jan 16 2012, 19:51
|
Местный
  
Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127

|
Цитата(scifi @ Jan 16 2012, 23:34)  Этот код какой-то кривой. Например, переменная 'char Buf_RS485;' используется как массив. Что это? Неточно запостили? Будьте любезны постить реальный код. Кто знает, что Вы там ещё переиначили? И лучше с отступами, а также обрамлять тегами (code)(/code). Вы подозреваете баг в компиляторе, а я подозреваю баг в программе. Чаще бывает второе. Уже подправил. Реальный код слишком длинный. К тому же похожие проблеммы с оптимизатором не редки. И как правило когда индекс =0, или он const. Иногда помагало обозвать переменную индекса массива как static. Но вот в этом куске бубны с танцами не помогли.
Сообщение отредактировал vlad_new - Jan 16 2012, 19:52
|
|
|
|
|
Jan 16 2012, 20:03
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(vlad_new @ Jan 16 2012, 23:51)  Уже подправил. Реальный код слишком длинный. К тому же похожие проблеммы с оптимизатором не редки. И как правило когда индекс =0, или он const. Иногда помагало обозвать переменную индекса массива как static. Но вот в этом куске бубны с танцами не помогли. Это глюки в программе с вероятностью 99%. Поскольку реальный код видеть нет возможности, то больше сказать нечего. Даже если бы был реальный код, было бы слишком трудно в нём разобраться, так как написан он (если судить по показанному отрывку) не самым лучшим образом, мягко говоря. Update: Забыл добавить. О глюках судят по результатам выполнения программы. Например, если содержимое пакета данных на проводе отличается от ожидаемого. Если Вы смотрите на содержимое переменных в отладчике и видите неожиданные значения - не факт, что это глюк. На высоких уровнях оптимизации бывает так, что данные отладчика весьма слабо коррелируют с исходным кодом. И вообще отлаживать удобнее на самом низком уровне оптимизации.
|
|
|
|
|
Jan 16 2012, 20:12
|
Местный
  
Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127

|
Цитата(scifi @ Jan 17 2012, 00:03)  Это глюки в программе с вероятностью 99%. Поскольку реальный код видеть нет возможности, то больше сказать нечего. Даже если бы был реальный код, было бы слишком трудно в нём разобраться, так как написан он (если судить по показанному отрывку) не самым лучшим образом, мягко говоря. Да отступы почему то здесь не выходят, хотя в режиме редактирования я их вижу. А на счет глюков в программе: ну так она же работает если без оптимизатора или Buf_RS485 описать как vu8 ( volatile unsigned char ), но тогда в сотнях местах приходится вписывать явное преобразование типов. memcopy((char*)Buf_RS485,.... ) Updete: Да я в таких случиях смотрю код ассемблера. А о веревке: Так и есть другое устройство принимает пакет с ошибочной длинной.
Сообщение отредактировал vlad_new - Jan 16 2012, 20:18
|
|
|
|
|
Jan 16 2012, 20:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(vlad_new @ Jan 16 2012, 22:12)  Да отступы почему то здесь не выходят, хотя в режиме редактирования я их вижу. Потому что Вы не оформили свой код в теги [сode] [/сode] Если бы оформили - все бы отсупало: Код с начала с отступом 8 пробелов
|
|
|
|
|
Jan 16 2012, 20:20
|
Местный
  
Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127

|
Цитата(Allregia @ Jan 17 2012, 00:17)  Потому что Вы не оформили свой код в теги [сode] [/сode] Если бы оформили - все бы отсупало: Код с начала с отступом 8 пробелов Не знал что так надо. Век живи век учись. Ща попробую.
|
|
|
|
Сообщений в этой теме
vlad_new Keil Оптимизатор Jan 16 2012, 16:45 scifi Цитата(vlad_new @ Jan 16 2012, 20:45) Есл... Jan 16 2012, 18:08 vlad_new Цитата(scifi @ Jan 16 2012, 22:08) А поче... Jan 16 2012, 18:43 Genadi Zawidowski Несовсем понятно о какой строчке идёт речь. Можект... Jan 16 2012, 18:57 vlad_new Цитата(Genadi Zawidowski @ Jan 16 2012, 22... Jan 16 2012, 19:07    scifi Цитата(vlad_new @ Jan 17 2012, 00:12) А н... Jan 16 2012, 20:20    aaarrr Цитата(vlad_new @ Jan 17 2012, 00:12) А н... Jan 16 2012, 20:24     vlad_new Цитата(aaarrr @ Jan 17 2012, 00:20) Подоб... Jan 16 2012, 20:30      aaarrr Цитата(vlad_new @ Jan 17 2012, 00:30) Вне... Jan 16 2012, 20:35      scifi Цитата(vlad_new @ Jan 17 2012, 00:30) Ест... Jan 16 2012, 20:36       vlad_new Цитата(scifi @ Jan 17 2012, 00:36) Можно ... Jan 16 2012, 20:51        aaarrr Цитата(vlad_new @ Jan 17 2012, 00:51) Но ... Jan 16 2012, 21:23         vlad_new Цитата(aaarrr @ Jan 17 2012, 01:23) Позво... Jan 16 2012, 21:35          scifi Опять всё по кругу...
Цитата(vlad_new @ Jan ... Jan 17 2012, 06:16     scifi Цитата(aaarrr @ Jan 17 2012, 00:24) Стран... Jan 16 2012, 20:31      aaarrr Цитата(scifi @ Jan 17 2012, 00:31) Зачем ... Jan 16 2012, 20:37     vlad_new Цитата(aaarrr @ Jan 17 2012, 00:24) Подоб... Jan 16 2012, 20:32  aaarrr Цитата(vlad_new @ Jan 16 2012, 23:51) Реа... Jan 16 2012, 20:13 scifi Да, забыл. Можно просто макрос. Ну и я переврал не... Jan 16 2012, 21:05 vlad_new Цитата(scifi @ Jan 17 2012, 01:05) Да, за... Jan 16 2012, 21:08 _Ivana Продолжу от лица неопытных новичков
Можно было ... Jan 17 2012, 17:07 aaarrr Цитата(_Ivana @ Jan 17 2012, 21:07) Два р... Jan 17 2012, 17:14 _Ivana Хороший вопрос!
Я сначала написал, а потом на... Jan 17 2012, 17:22 aaarrr Зачем, нет ЗАЧЕМ делить на 16 последовательным выч... Jan 17 2012, 18:13 _Ivana ЦитатаЗачем, нет ЗАЧЕМ делить на 16 последовательн... Jan 17 2012, 18:25 aaarrr Цитата(_Ivana @ Jan 17 2012, 22:25) Напри... Jan 17 2012, 18:34  vlad_new Я тут попробывал интерсный тип указателя к библиот... Jan 19 2012, 01:04   XVR Цитата(vlad_new @ Jan 19 2012, 05:04) Я т... Jan 19 2012, 09:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|