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

 
 
> Q: знатокам arm-вского ассемблера
abcdefg
сообщение Aug 5 2006, 16:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 23-01-06
Из: Msk
Пользователь №: 13 490



есть команда STR R1, [R0, #0x0]
при R1 = 0x00000000, R0 = 0x400002B5
пишет нули по адресу 0x400002B4 !!!

Есть ли выравнивание по адресу записи?! Если это так, то надо аккуратно работать в keil'e с void-скими указателями sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Aug 6 2006, 10:58
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 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-скими указателями sad.gif


А что вас так испугало? Читаем описание инструкции 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 такое не прокатит, дата аборт сразу...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 6 2006, 11:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ Aug 6 2006, 13:58) *
А что вас так испугало?

Очевидно получение неожиданного и без всяких предупреждений результата на ARM платформе (в отличие , например, от x86 платформы на которой обращение по невыровненному адресу хоть и медленнее, но корректно выполнится). И необходимость держать такой "нюанс" в голове программиста.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 6 2006, 11:53
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 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 реально в меньшенстве...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 6 2006, 12:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ Aug 6 2006, 14:53) *
Так что x86 реально в меньшенстве...

Но не по привычности/распространенности. Да ведет себя 'правильнее' в данной ситуации.
Давить? :-)))


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 04:34
Рейтинг@Mail.ru


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