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

 
 
> Выравнивание данных в памяти(стеке), Зачем всё это?
sigmaN
сообщение May 29 2008, 14:53
Сообщение #1


I WANT TO BELIEVE
******

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



Добрый день.
Вот разбираюсь с TMS320F28335...
Пробую линковать по разному....и вижу, что даже когда размер стека достаточный, но он размещен не там где надо - у меня глючит код. Я начал вчитываться в документацию и увидел там alignment...т.е. зачем-то всё любят выравнивать.
Я хотел-бы узнать зачем?
Я так подозреваю, кроме стека, выравнивать нужно и всё остальное. ..У линкера есть директива align, например.
А как выравнивать? По 16, 32, 64?
Разъясните мне ламеру саму суть операции)) Ведь тогда получаются дырки и память может использоваться не так эффективно.....её и так нехватает))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nitrotoluol
сообщение May 29 2008, 17:51
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 33
Регистрация: 20-05-08
Из: Украина
Пользователь №: 37 661



Выравнивание данных — способ размещения данных в памяти особым образом для ускорения доступа.

Центральные процессоры в качестве основной единицы при работе с памятью используют машинное слово, размер которого может быть различным. Однако, размер слова всегда равен нескольким байтам (размер байта является единицей, в которой отсчитываются адреса). Как правило, машинное слово равно 2k байтам, т.е. состоит из одного, двух, четырёх, восьми и т.д. байтов.

При сохранении какого-то объекта в памяти может случиться, что некое поле, состоящее из нескольких байтов, пересечёт «естественную границу» слов в памяти. Некоторые модели процессоров не могут обращаться к данным в памяти, нарушающим границы машинных слов. Некоторые могут обращаться, но к невыровненным данным обращение дольше, нежели к данным, находящимся внутри целого «машинного слова» в памяти.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 01:16
Рейтинг@Mail.ru


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