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

 
 
> align для структур
Chestor
сообщение Apr 22 2011, 05:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 23-11-10
Пользователь №: 61 098



Добрый день.
Подскажите пожалста, как быть со структурами в IAR?!... Надо выравнивать структуры, чтобы адреса заканчивались нулями... есть #pragma data_alignment=XXX, но она действует только на объявляемые переменные, а можно ли задать тип структуры, которая при объявлении экземпляра структуры сама будет выравниваться?... нАподобие того как в GCC делается struct my_struct{...}__attribute__((aligned(256)))
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Apr 22 2011, 06:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



В IAR есть тоже самое

#pragma pack(4)//alinment 4 bytes
my_struct{...}
#pragma pack() //default aligment


--------------------
Go to the top of the page
 
+Quote Post
Chestor
сообщение Apr 22 2011, 07:09
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 23-11-10
Пользователь №: 61 098



а вот и нет... пробовал делать так:
Код
#pragma pack(push)
#pragma pack(256)

struct ohci_hcca {
...
} //__attribute__((aligned(256))); (то, что было для GCC)

#pragma pack(pop)

- IAR отказыввается работать с такими большими числами как 256. более того, если ему указать 16, например, то он все равно не выравнивает адрес (в моем случае адрес заканчивался на 8).

Я так понимаю, что #pragma pack(...) нужен для нормировки РАЗМЕРА структуры, но никак не для выравнивания адреса структуры в памяти...

Чё ж делать-то?! =(
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 22 2011, 08:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Chestor @ Apr 22 2011, 11:09) *
аЧё ж делать-то?! =(
Что-то я Вас не пойму... Вам нужно: чтобы данные (в конкретном случае - структура) была выравнена? У Вас вот так не получается?
Код
struct ohci_hcca {
...
};

#pragma data_alignment=256
struct ohci_hcca sA;

Go to the top of the page
 
+Quote Post
Chestor
сообщение Apr 22 2011, 09:21
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 23-11-10
Пользователь №: 61 098



Цитата(Палыч @ Apr 22 2011, 12:27) *
У Вас вот так не получается?...

так получается... но в случае с GCC синтаксисом мы можем просто объявить структуру и она будет сразу выровнена(выравнивание задано при описании), а с случае IARa при объявлении КАЖДОГО нового экземпляра структуры придется прописывать перед ней pragma. Вот я и спрашиваю, можно ли сделать полный эквивалент GCC-шного __attribure__(aligned(256))?

Сообщение отредактировал Chestor - Apr 22 2011, 09:23
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 22 2011, 09:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Chestor @ Apr 22 2011, 13:21) *
Вот я и спрашиваю...
Нет. Эта #pragma data_alignment распространяется только на переменные
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 03:11
Рейтинг@Mail.ru


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