-
- На счёт пиковской версии IAR не скажу, а у EW430 есть #pragma data_alignment=expression, но вот будет ли работать для полей структуры тоже вопрос. - amx(25.06.2013 17:49)
- На счёт пика шутка была,- арм. Есть такая прагма, пробовал сунуть её над полем структуры, компилятор говорит: "нельзя использовать эту прагму здесь". - Молодой коллега(25.06.2013 17:55)
- Если арм, то можно нужное поле структуры объединить с int через union. Тогда должен бы выравнять как int. SciFi(34 знак., 25.06.2013 18:00)
- Ну тогда всё очень непонятно. Не выравнивает по-умолчанию? - amx(25.06.2013 17:57, ссылка)
- по-умолчанию выравнивает, чуть выше писал что 4х - для примера - Молодой коллега(25.06.2013 18:09)
- Тогда просто грохнуть гнутый атрибут, и ничего делать не нужно? - Vladimir Ljaschko(25.06.2013 18:24)
- Может это я чего-то туплю, но что делать если мне надо выровнять поле на границу восьми байт? - Молодой коллега(25.06.2013 18:29)
- А нафиг? Лучше расскажите про задачу, что-нибудь придумаем. SciFi(65 знак., 25.06.2013 19:20)
- Задача
содратьпортировать линуксовый ehci'овый USB-host. Там где выровнять на 4 байта UNION вполне себе нормальный вариант, но по-моему там(в исходниках) есть и на больше, сейчас посмотреть не могу. - Молодой коллега(25.06.2013 21:00)- Может чего то не понимаю.., но что мешает использовать union для выравнивания на более чем 4 байта ? - Юрий_СВ(25.06.2013 21:12)
- Покажите как? - Молодой коллега(25.06.2013 21:17)
- union asd{u8_t b[8]; u16_t c;}; - Юрий_СВ(25.06.2013 21:20 - 21:23)
- Это было бы смешно, если бы не было так грустно :-) - SciFi(25.06.2013 21:24)
- поясните, если не трудно - Юрий_СВ(25.06.2013 21:28)
- Ну, просто не будет работать. - SciFi(25.06.2013 21:29)
- почему ? - Юрий_СВ(25.06.2013 21:30)
- почему оно должно работать? это вы объясните. - SciFi(25.06.2013 21:33)
- думал, раз разговор о выравнивании полей - значит структура уже выровнена - не заглянул в средину верхнего сообщения - Юрий_СВ(25.06.2013 22:27)
- "u8_t b[8]" не будет выровнено на границе 8 байт, я кагбэ об этом. - SciFi(25.06.2013 22:41)
- думал, раз разговор о выравнивании полей - значит структура уже выровнена - не заглянул в средину верхнего сообщения - Юрий_СВ(25.06.2013 22:27)
- почему оно должно работать? это вы объясните. - SciFi(25.06.2013 21:33)
- почему ? - Юрий_СВ(25.06.2013 21:30)
- Ну, просто не будет работать. - SciFi(25.06.2013 21:29)
- поясните, если не трудно - Юрий_СВ(25.06.2013 21:28)
- Это было бы смешно, если бы не было так грустно :-) - SciFi(25.06.2013 21:24)
- union asd{u8_t b[8]; u16_t c;}; - Юрий_СВ(25.06.2013 21:20 - 21:23)
- Покажите как? - Молодой коллега(25.06.2013 21:17)
- Я боюсь, там очень x86-специфичное всё. И порядок байтов, и выравнивания, и размеры других типов данных -- что-нибудь да не совпадёт. Кроме того, ньюансы связанные с GCC. Тогда уж, может, сразу взять GCC? Или, как вариант, взять упакованную fk0(97 знак., 25.06.2013 21:07)
- Я "дербаню" сборку которая работала на ARM9, наиболее близкое что смог найти. C gcc дел не имел, разбираться не хочу. - Молодой коллега(25.06.2013 21:23)
- А зря. Фигли там разбираться. Компилятор - он и в Африке компилятор. SciFi(25 знак., 25.06.2013 21:26 - 21:29)
- +много. Тупо напихать в структуру байтов. Потому что подозреваю, что это будет наименьшая из проблем. - SciFi(25.06.2013 21:19)
- Только эта, не факт, что целевая платформа с неправильно выровненными данными вообще заработает. - fk0(25.06.2013 21:07)
- Я "дербаню" сборку которая работала на ARM9, наиболее близкое что смог найти. C gcc дел не имел, разбираться не хочу. - Молодой коллега(25.06.2013 21:23)
- Может чего то не понимаю.., но что мешает использовать union для выравнивания на более чем 4 байта ? - Юрий_СВ(25.06.2013 21:12)
- Задача
- Може и я туплю, но : Vladimir Ljaschko(558 знак., 25.06.2013 18:44)
- А нафиг? Лучше расскажите про задачу, что-нибудь придумаем. SciFi(65 знак., 25.06.2013 19:20)
- Может это я чего-то туплю, но что делать если мне надо выровнять поле на границу восьми байт? - Молодой коллега(25.06.2013 18:29)
- Тогда просто грохнуть гнутый атрибут, и ничего делать не нужно? - Vladimir Ljaschko(25.06.2013 18:24)
- по-умолчанию выравнивает, чуть выше писал что 4х - для примера - Молодой коллега(25.06.2013 18:09)
- На счёт пика шутка была,- арм. Есть такая прагма, пробовал сунуть её над полем структуры, компилятор говорит: "нельзя использовать эту прагму здесь". - Молодой коллега(25.06.2013 17:55)
- PIC -- значит профессионал. AVR -- контроллер любительского уровня. - fk0(25.06.2013 17:47)
- А если первая прога была для 580ВМ80/? Совсем старик? (потом были и 8052, PIC, теперь ARM, и в каждом типе начинал с моргания светодиода) - shan(25.06.2013 19:08)
- Первая программа которую я написал была для PIC16F84 :) - Молодой коллега(25.06.2013 18:07, картинка)
- Видать, коллега не такой уж и молодой. Лично я ни PIC16C84, ни PIC16F84 уже не застал (они ещё продавались, но по цене "в 10 раз дороже", чем PIC16F628). И первая моя программа мигала светодиодом естесственно. Кстати да, признаюсь в крайнем fk0(75 знак., 25.06.2013 18:16)
- Не первый раз тут мне намекают что я не так уж молод; для ясности, давеча 27е рождение справил. Хотя да не такой уж молодой. :( Молодой коллега(34 знак., 25.06.2013 18:26)
- Видать, коллега не такой уж и молодой. Лично я ни PIC16C84, ни PIC16F84 уже не застал (они ещё продавались, но по цене "в 10 раз дороже", чем PIC16F628). И первая моя программа мигала светодиодом естесственно. Кстати да, признаюсь в крайнем fk0(75 знак., 25.06.2013 18:16)
- На счёт пиковской версии IAR не скажу, а у EW430 есть #pragma data_alignment=expression, но вот будет ли работать для полей структуры тоже вопрос. - amx(25.06.2013 17:49)