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

 
 
> DATA_ALIGN pragma, Что-то я туплю :)
sigmaN
сообщение Nov 5 2009, 23:29
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Итак, имеем сигнальник техаса серии C2000.
Напомню, что "отличительной особенностью" данного чуда является 16ти битный char(кстати int тоже 16битный ).
Также, следует напомнить, что sizeof(char) == 1 == sizeof(int);
Память адресуется словами(по 2 байта), отдельный байт адресовать никак нельзя sad.gif

Далее, требование по выравниванию:
Цитата
The C28x CPU expects memory wrappers or peripheral-interface logic to align
any 32-bit read or write to an even address. If the address-generation logic
generates an odd address, the CPU must begin reading or writing at the previous
even address.


Вопрос первый: как этот зверь работает с 64 битными переменными?
Код
typedef unsigned long long uint64_t;
Как сие разместится в памяти(я имею в виду выравнивание)?

Вопрос второй: хочу заранее выровнять char буфер, чтобы к его элементам при желании можно было обращаться как к имеющим тип uint64_t.
Цитата
The DATA_ALIGN pragma aligns the symbol to an alignment boundary.
The alignment boundary is the maximum of the symbol's default alignment value or the value of the constant in bytes.
The constant must be a power of 2.
The syntax of the pragma in C is:
#pragma DATA_ALIGN ( symbol , constant );

Пока не могу толком осознать смысл этого: "The alignment boundary is the maximum of the symbol's default alignment value or the value of the constant in bytes."
Может кто-нибудь на пальцах объяснить? Что-то никак не могу увязать maximum of the symbol's default alignment value or the value of the constant in bytes unsure.gif
И что такое вообще symbol's default alignment value? И почему в предложении мы видим операцию ИЛИ(or) со значением constant in bytes? Вот ей и Богу как-то не вяжется sad.gif
Саму суть выравнивания я понимаю, но вот к примеру как ответить на второй вопрос? Следует ли мне передать прагме 4 в качестве constant?
Мыслю исходя из того, что sizeof(uint64_t)==4;


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post



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

 


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


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