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

 
 
> Неявное преобразование типов IAR ARM 6.10
grv
сообщение Feb 22 2011, 11:30
Сообщение #1


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

Группа: Участник
Сообщений: 101
Регистрация: 28-04-06
Пользователь №: 16 592



Перевожу проект с меги 128 на LPC23xx
Есть такой кусок на С:

Код
                           i=((unsigned short*)&(bin_buff[1]))[0];


где
unsigned short i;
unsigned char bin_buff[18];
линкер раскидал bin_buff[] с адреса 0x4000 01e4

этой строкой хочу взять 16 бит без знака из двух байт bin_buff[2]:bin_buff[1]

проверяю на симуляторе -все ок
в железе старший байт всегда равен 0, младший - правильный

в окне дизасма в симуляторе код получился такой

Код
                           i=((unsigned short*)&(bin_buff[1]))[0];
        0x710: 0xe59f113c     LDR       r1, ??DataTable10_12   ; bin_buff
        0x714: 0xe1d110b1     LDRH      r1, [r1, #0x1]
        0x718: 0xe1cd10b0     STRH      r1, [sp]


рылся-рылся в итоге чисто случайно обращаю внимание на сообщение loga:

Tue Feb 22 13:01:20 2011: Warning: The LDRH instruction at addr: 0x00000714 made an illegal unaligned access to 0x400001E5

Ну и сразу все стало на свои места.
Теперь вопрос собственно: какого %ера компилятор в купе с линкером не выдали хотя бы варнинг по этму поводу ? Все варнинги и ероры были включены. Или иначе, где я должен был почитать о такой ситуации чтоб ее не допустить ?
Go to the top of the page
 
+Quote Post



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

 


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


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