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

 
 
> Выравнивание данных в памяти(стеке), Зачем всё это?
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
Ответов
aaarrr
сообщение May 29 2008, 15:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Суть операции в том, что далеко не на всех архитектурах можно обращаться к памяти без выравнивания. Да и на тех, где можно, это приводит к снижению производительности.

Т.е. 16-и битные данные должны укладываться по четным адресам, 32-х бтные - по адресам, кратным 4 и т.д.
Для стека иногда бывают дополнительные ограничения.
Go to the top of the page
 
+Quote Post



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

 


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


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