Здравствуйте, гость ( Вход | Регистрация )
|
igor_bogomolov |
29.8.2012, 20:31
Сообщение
#1
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29
|
Всем привет.
Понимаю, что название темы кажется странным, но тем не менее... Имеем такой код (синтетический тест воспроизводящий проблему) Компилируем для платформы x86, получаем вполне ожидаемый выводЦитата 01:00:02:00:03:00:04:00:05:00: Компилирую для arm (-mcpu=arm926ej-s -march=armv5te), получаю следущее0001:0002:0003:0004:0005: abaa:acab:01ac:0001: Цитата 01:00:02:00:03:00:04:00:05:00: 01ac:0200:0300:0400:0500: abaa:abaa:01ac:01ac: Как можно объяснить такой вывод, и, самое главное, как заставить именно этот код вести себя ожидаемо (как на x86)? * Важный момент, что размер массива нечётный. При выравнивании 1, если сразу объявить еще один такой же массив и повторить для него те же действия, вывод для него будет отличаться, но всё равно не будет правильным (т.е. таким же как на x86). |
|
|
|
igor_bogomolov не работает приведение типов на arm 29.8.2012, 20:31
maint Для выяснения берем и выводим на печать на обоих п... 30.8.2012, 3:57
iReset Дело в выравнивании адресов на ARM. Т.е. каждый ти... 30.8.2012, 6:38
igor_bogomolov Цитата(maint @ 30.8.2012, 4:57) Для выясн... 30.8.2012, 8:26
iReset Цитата(igor_bogomolov @ 30.8.2012, 9:26) ... 30.8.2012, 9:58
igor_bogomolov Цитата(iReset @ 30.8.2012, 10:58) Ссылок,... 30.8.2012, 10:09![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.12.2025, 13:33 |