|
Q: знатокам arm-вского ассемблера |
|
|
|
Aug 5 2006, 16:54
|
Местный
  
Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490

|
есть команда STR R1, [R0, #0x0] при R1 = 0x00000000, R0 = 0x400002B5 пишет нули по адресу 0x400002B4 !!! Есть ли выравнивание по адресу записи?! Если это так, то надо аккуратно работать в keil'e с void-скими указателями
|
|
|
|
|
 |
Ответов
|
Aug 6 2006, 10:58
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(abcdefg @ Aug 5 2006, 19:54)  есть команда STR R1, [R0, #0x0] при R1 = 0x00000000, R0 = 0x400002B5 пишет нули по адресу 0x400002B4 !!! Есть ли выравнивание по адресу записи?! Если это так, то надо аккуратно работать в keil'e с void-скими указателями  А что вас так испугало? Читаем описание инструкции STR и видим там (документ ARM DDI 0100E стр. A4-89): Цитата Non word-aligned addresses STR instructions ignore the least significant two bits of address. So if these bits are not 0b00, the effects of STR are not precisely opposite to those of LDR. Так что для STR два младших бита игнорируются. А для LDR такое не прокатит, дата аборт сразу...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 6 2006, 11:53
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(zltigo @ Aug 6 2006, 14:26)  Цитата(Rst7 @ Aug 6 2006, 13:58)  А что вас так испугало?
Очевидно получение неожиданного и без всяких предупреждений результата на ARM платформе (в отличие , например, от x86 платформы на которой обращение по невыровненному адресу хоть и медленнее, но корректно выполнится). И необходимость держать такой "нюанс" в голове программиста. Ну как сказать - неожиданный, на 68000 - аналогично, правда там exception и при записи происходит (а вот начиная с 030 - уже работает невыровненный доступ), PPC - тоже отказывается работать с невыровненными данными, да пожалуй все RISC такие; из классики - PDP11 - тоже самое, IBM360/370 - тоже, вот VAX - не помню. Так что x86 реально в меньшенстве...
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
Сообщений в этой теме
abcdefg Q: знатокам arm-вского ассемблера Aug 5 2006, 16:54 DASM Цитата(abcdefg @ Aug 5 2006, 20:54) есть ... Aug 5 2006, 17:33 zltigo Цитата(DASM @ Aug 5 2006, 20:33) И Keil т... Aug 5 2006, 17:48  DASM Цитата(zltigo @ Aug 5 2006, 21:48) Цитата... Aug 5 2006, 18:18   abcdefg Цитата(DASM @ Aug 5 2006, 22:18) гм.. ну ... Aug 6 2006, 18:00    Andy Mozzhevilov Цитата(abcdefg @ Aug 7 2006, 00:00) Цитат... Aug 7 2006, 03:22     abcdefg Цитата(Andy Mozzhevilov @ Aug 7 2006, 07... Aug 7 2006, 07:52 Rst7 ЦитатаДавить? :-)))
Что??? Куда???
Да и это вам п... Aug 6 2006, 12:24 goodwin А вообще-то это зависит от конкретного компилятора... Aug 6 2006, 18:14 Harbour что-то видать намучено в linker script с align опц... Aug 7 2006, 09:36 zltigo Цитата(Harbour @ Aug 7 2006, 12:36) что-т... Aug 7 2006, 10:00  defunct Цитата(zltigo @ Aug 7 2006, 13:00) Никаки... Aug 7 2006, 10:19   abcdefg Цитата(defunct @ Aug 7 2006, 14:19) Цитат... Aug 7 2006, 13:46  Harbour Цитата(zltigo @ Aug 7 2006, 13:00) Цитата... Aug 7 2006, 11:14 Harbour Проверил на arm-elf-gcc 4.1.1 - в любом случае (pa... Aug 7 2006, 11:40 zltigo Цитата(Harbour @ Aug 7 2006, 14:40) а в с... Aug 7 2006, 11:55 defunct ЦитатаКод небрежный - отсюда и результат. Автору н... Aug 7 2006, 13:33 defunct Для тестов использовал приведенный выше пример Сиш... Aug 7 2006, 21:20 goodwin Вот и я о том. Лучше перебдеть, чем недобдеть - ра... Aug 7 2006, 21:39 GetSmart Фактически была некорректной эта команда:
КодU32 *... Aug 8 2006, 01:20 defunct Отправил bug report в Keil, сказали пофиксят.. Aug 9 2006, 12:38 GetSmart Нашёл у себя в ИАР то ли баг, то ли я тупой?
Напиш... Aug 10 2006, 11:53 GetSmart Или может я ошибаюсь? Может выравнивание прикрепля... Aug 10 2006, 12:18 Сергей Борщ Цитата(GetSmart @ Aug 10 2006, 15:18) Или... Aug 10 2006, 12:33 GetSmart Ну допустим. Тогда как проще (и желательно красиве... Aug 10 2006, 13:30 ek74 Цитата(GetSmart @ Aug 10 2006, 17:30) Ну ... Aug 10 2006, 14:32 Сергей Борщ Цитата(GetSmart @ Aug 10 2006, 16:30) Ну ... Aug 10 2006, 15:14 GetSmart Сергей Борщ
Именно так я извратился ещё вчера. (в ... Aug 11 2006, 02:03 Сергей Борщ Цитата(GetSmart @ Aug 11 2006, 05:03) Сер... Aug 11 2006, 08:16 Rst7 Ну есть еще злой способ:
Кодfloat getfloat(cha... Aug 11 2006, 05:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|