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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> В IAR 5.4 нашел баг
prottoss
сообщение Nov 8 2009, 00:51
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Nov 8 2009, 07:46) *
Для начала проверьте, не случается ли у вас, что free изначально меньше нуля (ловушку какую-нибудь влепите). Ну, и дизассемблер "подозрительной" части выложите.
ИМХО, вероятность того, что это глюк ИАРа стремится к нулю, хе-хе smile.gif
...Ботва в голове все же...Пошел спать, рыдая.


--------------------
Go to the top of the page
 
+Quote Post
Alechek
сообщение Nov 26 2009, 06:00
Сообщение #17


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



А я так и не смог заставить
iccarm.exe
IAR ANSI C/C++ Compiler V5.40.0.21500/W32 EVALUATION for ARM
переварить
#pragma message("text")

Кушать то кушает, но на выходе ничего нет. Примечания разрешал - тишина.


--- добавка ---
проверил руками: кушает и переваривает. вот только в IDE оно почему-то не передается... sad.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 26 2009, 09:09
Сообщение #18


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Alechek @ Nov 26 2009, 08:00) *
--- добавка ---
проверил руками: кушает и переваривает. вот только в IDE оно почему-то не передается... sad.gif
Tools->Options->Messages->Show build messages->All. Во всяком случае в оболочках 4.XX там было.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
atlantic
сообщение Jan 26 2010, 08:53
Сообщение #19


участник
****

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



Цитата(MALLOY2 @ Oct 1 2009, 11:43) *
Точнее это не баг, а скорее неудобство, для IAR это фича, при компиляции асмовских файлов (*.s) если в коментах встречается буква "я", компилятор выдает ...


IAR Assembler for MSP430 v 4.21.6:

Думал, что это уже давно починили, а нет, в этой версии откатили назад:
ругается на символах в Си комментариях //
(Error[15] Invalid character encountered):
e0 e5 e8 ea eb ed ef f0 f2 f9 ff - - - аеиклнпртщя

если начало // комментариев заменить на ;
то работает до "я" - неожиданный конец

В предыдущей версии 4.20 все работало.

Интересно зачем они парсят комментарии, неужели там в асме могут быть как в verilog meta-comments ?
Go to the top of the page
 
+Quote Post
ZZmiy
сообщение Mar 14 2010, 12:59
Сообщение #20





Группа: Новичок
Сообщений: 1
Регистрация: 26-09-07
Пользователь №: 30 846



Цитата
при компиляции асмовских файлов (*.s) если в коментах встречается буква "я"


Не только в комментариях, но и в коде (например, DB 'я')...

Исправление бага при компиляции ассемблером файлов, содержащих маленькую русскую букву 'я' в кодировке WIN (код 0xFF):
(для a430.exe размером 2,035,712 (IAR Assembler V4.21.2.50066/W32 for MSP430))

Сравнение файлов a430.exe и a430patched.exe:
000250C1: BE B6
000250C3: 16 32

Для других версий a430.exe попробуйте найти последовательность кодов A3CC795F00 0FBE0416 03D53BD1 и заменить 0FBE0416 (код команды movsx eax,byte ptr [esi+edx]) на 0FB60432 (код команды movzx eax,byte ptr [esi+edx]).

Для icc430.exe это не подходит... smile.gif Попробуйте в С-код вставить asm("mov r12,r12 ;я"); и скомпилировать...
Go to the top of the page
 
+Quote Post
atlantic
сообщение Mar 15 2010, 19:56
Сообщение #21


участник
****

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



Цитата(ZZmiy @ Mar 14 2010, 16:59) *
Не только в комментариях, но и в коде (например, DB 'я')...

Исправление бага при компиляции ассемблером файлов, содержащих маленькую русскую букву 'я' в кодировке WIN (код 0xFF):
(для a430.exe размером 2,035,712 (IAR Assembler V4.21.2.50066/W32 for MSP430))

Сравнение файлов a430.exe и a430patched.exe:
000250C1: BE B6
000250C3: 16 32

Для других версий a430.exe попробуйте найти последовательность кодов A3CC795F00 0FBE0416 03D53BD1 и заменить 0FBE0416 (код команды movsx eax,byte ptr [esi+edx]) на 0FB60432 (код команды movzx eax,byte ptr [esi+edx]).

Для icc430.exe это не подходит... smile.gif Попробуйте в С-код вставить asm("mov r12,r12 ;я"); и скомпилировать...


Что-то патчить ассемблер абсолютно неприкалывает, тем более что
Цитата
> В предыдущей версии 4.20 все работало.


Вопрос был в другом, зачем они комменты парсят %) ?
(если точнее сказать, зачем внутри комментариев ищут что-то отличное от признака конца комментария)

И до каких пор 0xff для них будет признаком конца файла?
Что-то у них там неправильно с системностью.

Это скорее был вопрос/просьба к тем, кто с ихним суппортом официально общается, чтоб им ask/"намекнули" : )
Go to the top of the page
 
+Quote Post
VslavX
сообщение Mar 24 2010, 17:38
Сообщение #22


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(atlantic @ Mar 15 2010, 21:56) *
Что-то патчить ассемблер абсолютно неприкалывает, тем более что

Вопрос был в другом, зачем они комменты парсят %) ?

Парсинг каментов - это капут. У меня в ассемблере инклудится многоуровневая конфигурация в виде вложенных h-файлов, там только куча #define-ов и других препроцессорных команд, и довольно много русскоязычных комментариев (это ж конфигурация, 90% специфично для проекта). Ото оно все радовалось "по самое не могу".

Сегодня еще классную фишку "нарыл". Проц - LPC1768, невыравненый доступ запрещен (отладка суровая идет), исключения летят вовсю. Разбираюсь, компилятору (5.41A) дан флажок --no_unaligned_access, он корректно генерирует вызов функции __eeabi_uread4, а там вот такой милый код:
Код
00000000 <__aeabi_uread4>:
   0:    6800          ldr    r0, [r0, #0]
   2:    4770          bx    lr
Go to the top of the page
 
+Quote Post
miv
сообщение Apr 16 2010, 12:23
Сообщение #23


Участник
*

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



Цитата(prottoss @ Nov 8 2009, 04:53) *
Всем доброго времени суток!
Не стал создавать новую тему потому как мож у меня моск под утро двинулся.
IAR C/C++ Compiler for ARM 5.40.1.51558 (5.40.1.51558). Код:
Код
...
INT i, sw_size, cnt, i_head, free;
...
/* Get SW FIFO fields */
        ptr = p_eps->data;
        sw_size = p_eps->sw_size;    
        i_head = p_eps->i_head;
        free = sw_size - p_eps->len;    /* Calculate size for new data payload */
...
while(free--)    /* Read new data */
{
     ptr[i_head++] = AT91C_BASE_UDP->UDP_FDR[ep];
    if(i_head >= sw_size)
          i_head = 0;
}

переменная free не может быть меньше нуля, так как sw_size не может быть меньше len.
Поясню - sw_size - это размер FIFO буфера, len- количество полезных данных в пакете.
При очередном зависоне торможу программу и вижу, что sw_size равно len, при этом free в минусе wacko.gif blink.gif
Если вместо while(free--) ставлю for(i = 0; i < free; i++) все работает прекрасно.
Вот такая ботва. Тока не пойму, у меня в голове или баг компилятора.

Если Вы тормозите программу после исполнения while так оно и д.б.
Поскольку sw_size равно len, то free == 0 а следовательно при первом же while( free-- ) тело while испонятся не будет а free сразу после выхода free будет == -1 поскольку он int типа. Так устроен язык С
а с циклом for тело его тоже выполнятся не будет но free не станет -1 и даже i не станет 1. wink.gif

Сообщение отредактировал miv - Apr 16 2010, 12:24
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Aug 6 2010, 14:27
Сообщение #24


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

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



Лечение aavr.exe 5-50 от заякания в комментариях:
CODE
Сравнение файлов aavr.old и AAVR.EXE
0000AF21: BE B6
Go to the top of the page
 
+Quote Post
kv_addr
сообщение May 23 2011, 02:55
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279



Цитата(halfdoom @ Aug 6 2010, 17:27) *
Лечение aavr.exe 5-50 от заякания в комментариях:
Код
Сравнение файлов aavr.old и AAVR.EXE
0000AF21: BE B6

Для aavr.exe v5.51 - патчить в том же месте.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 07:01
Рейтинг@Mail.ru


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