dimitryl 0 12 мая, 2006 Опубликовано 12 мая, 2006 · Жалоба *(char*)0x20000001=0xFF; *(short*)0x20000001=0x8888; кладется по адресу 0x20000000 и 0x20000001.((( Кто нибудь может обьяснить чья это "фича" - ARMа или Кейла? И самое главное как это обойти - массивы в памяти выделяются динамически и гарантировать что в ходе выполнения программы адрес short будет четным никак(((. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 12 мая, 2006 Опубликовано 12 мая, 2006 · Жалоба 1. Все memory allocator'ы выделяют "выровненные" блоки памяти. Можешь у себя это проверить выделив два блока памяти размером в байт и посмотреть на адреса соответствующих pointer'ов. 2. Если уж очень надо читать с невыровненного адреса существует специальный модификатор (по крайней мере в EVC++) - __unaligned, например - WORD __unaligned *pwD. Он нормально (только медленнее) читает с любого адреса. Насчет Keil и прочих - не в курсе, но наверное есть что-то похожее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 12 мая, 2006 Опубликовано 12 мая, 2006 · Жалоба Кто нибудь может обьяснить чья это "фича" - ARMа или Кейла? ARM. И самое главное как это обойти - массивы в памяти выделяются динамически и гарантировать что в ходе выполнения программы адрес short будет четным никак(((. А полученный указатель всегда будет выровнен на машинное слово и иметь размер не менее машинного слова. Делать менеджер памяти с другим поведением наверное никому еще в голову не пришло :-) ввиду абсолютно ненужных хлопот и ненужных проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 12 мая, 2006 Опубликовано 12 мая, 2006 · Жалоба минимальный блок памяти у malloc намного больше чем 2 байта, так что выделенная память будет выравнена как минимум байт на 8. ARM не умеет читать HALF WORD (16 бит) и WORD (32 бит) с невыравненных адресов, вернее младшие биты просто игнорируются. __unaligned просто будет читать по байтам и преобразовывать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimitryl 0 12 мая, 2006 Опубликовано 12 мая, 2006 · Жалоба Модификатор для кейла - __packed. большое спасибо всем ответившим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться