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

 
 
> Размер unsigned int или int Keil4.5
TAutomatic
сообщение Jun 2 2012, 11:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Добрый день, коллеги.
Месяц использую LPC1768 и только сейчас с "ужасом" заметил, что под переменные unsigned int и int компилятор отводит по 4 байта.
Использую среду Keil 4.5 и постоянно плююсь даже не по причине ее скудости, а по причине неудобности документации на нее и компилятор. Как установить "нормальный" размер этих типов данных размером в 2 байта?
И второй вопрос. Я был уверен, что в Cortex-M3 отсутствует необходимость выравнивания разноразмерных типов данных.
Об этом написано тут
Тем не менее, у себя в реале я этого не вижу. Если за однобайтовой переменной следует четырехбайтовая, то она все равно выравнивается по границе 32 разрядного слова, тоесть остается неиспользуемый промежуток в 3 байта. Что тут не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 2 2012, 13:28
Сообщение #2


Гуру
******

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



Char может быть расположен как угодно - на скорости это не скажется. А вот short, int и т.п. лучше выравнивать, что компилятор и делает по умолчанию.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jun 2 2012, 13:50
Сообщение #3


Гуру
******

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



Цитата(aaarrr @ Jun 2 2012, 19:28) *
Char может быть расположен как угодно - на скорости это не скажется. А вот short, int и т.п. лучше выравнивать, что компилятор и делает по умолчанию.
Стоп-стоп. Что то я Вас не понимаю... Зачем выравнить 'int' если он по умолчанию и так ляжет в 32-бит слово??? То же самое относится к типу 'long'. Для 32-бит систем эти типы одинаковы по размерности.
А вот как раз с 8/16-бит переменными ('char' и 'short') сложности по производительности.
Допустим, вы объявили три переменные трех разных типов:
Код
__packed char a;
__packed short b;
__packed long c;

С переменной 'c' и так все ясно, она 32-бит и компилятор положит ее в память по выровненному 32-бит адресу.
С переменными 'а' и 'c' начинаются сложности. Компилятор положит их в 32-бит ячейку вместе. Т.е. у одной из переменных, в зависимости от решения компилятора будет не выровненный адрес. У какой - не известно sm.gif Все зависит от интеллекта компилятора... Возможно, я заблуждаюсь?

Цитата(aaarrr @ Jun 2 2012, 19:28) *
Char может быть расположен как угодно - на скорости это не скажется.

Код
__paced short a;
__packed char i;

for(i = 0; i++; i < MAXCYCLE)
{  
   ....
}

Интересно, скажется ли на производительности цикла то, в каком байте 32-бит слова будет расположена переменная 'i'? В младшем из 4-х байтов или в 3-ем?


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 2 2012, 14:02
Сообщение #4


Гуру
******

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



Цитата(prottoss @ Jun 2 2012, 17:50) *
С переменной 'c' и так все ясно, она 32-бит и компилятор положит ее в память по выровненному 32-бит адресу.

Нет, ведь мы позволили разместить ее как угодно (__packed).

Цитата(prottoss @ Jun 2 2012, 17:50) *
С переменными 'а' и 'c' начинаются сложности. Компилятор положит их в 32-бит ячейку вместе. Т.е. у одной из переменных, в зависимости от решения компилятора будет не выровненный адрес. У какой - не известно sm.gif Все зависит от интеллекта компилятора... Возможно, я заблуждаюсь?

Объясните мне, как у char'а размерностью один байт может быть не выравнен адрес?
Если вы объявили переменную как __packed, компилятор по определению работает с ней как с не выравненной, несмотря на реальный адрес.

Цитата(prottoss @ Jun 2 2012, 17:50) *
Интересно, скажется ли на производительности цикла то, в каком байте 32-бит слова будет расположена переменная 'i'? В младшем из 4-х байтов или в 3-ем?

Разумеется, нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TAutomatic   Размер unsigned int или int Keil4.5   Jun 2 2012, 11:17
- - ohmjke   Размер int равен размеру машинного слова. В данном...   Jun 2 2012, 11:27
|- - TAutomatic   Цитата(ohmjke @ Jun 2 2012, 14:27) Размер...   Jun 2 2012, 11:33
- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:17) Ка...   Jun 2 2012, 11:30
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:30) Исполь...   Jun 2 2012, 11:43
|- - TAutomatic   Получается, все же есть в <stdint.h> - short...   Jun 2 2012, 11:47
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:43) Пе...   Jun 2 2012, 11:49
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:49) А вы п...   Jun 2 2012, 11:53
|- - prottoss   Цитата(TAutomatic @ Jun 2 2012, 17:53) По...   Jun 2 2012, 12:20
||- - TAutomatic   Цитата(prottoss @ Jun 2 2012, 15:20) Вам ...   Jun 2 2012, 12:36
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:53) По...   Jun 2 2012, 12:43
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 15:43) Сами р...   Jun 2 2012, 12:54
||- - scifi   Цитата(TAutomatic @ Jun 2 2012, 16:54) Но...   Jun 2 2012, 18:40
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 18:43) Кодuns...   Jun 2 2012, 12:56
|- - aaarrr   Цитата(prottoss @ Jun 2 2012, 16:56) Наве...   Jun 2 2012, 13:05
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 19:05) Нет. К...   Jun 2 2012, 13:10
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 16:05) Нет. К...   Jun 5 2012, 05:51
- - ohmjke   ЦитатаМашинное слово — машиннозависимая и платформ...   Jun 2 2012, 11:37
- - ohmjke   Написали же, 2 байтовый это short.   Jun 2 2012, 11:45
- - ohmjke   short он не из stdint.h, а просто является частью ...   Jun 2 2012, 11:50
- - ivainc1789   Не хотел создавать новую тему... Можно ли спросить...   Jun 2 2012, 12:21
|- - ohmjke   Цитата(ivainc1789 @ Jun 2 2012, 16:21) Не...   Jun 2 2012, 12:26
|- - prottoss   Цитата(ivainc1789 @ Jun 2 2012, 18:21) За...   Jun 2 2012, 12:30
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 20:02) Объясн...   Jun 2 2012, 14:23
- - esaulenka   Я бы предложил не заниматься всякой фигнёй. Особен...   Jun 5 2012, 11:40
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 5 2012, 16:57
|- - IgorKossak   Цитата(esaulenka @ Jun 5 2012, 14:40) Кей...   Jun 5 2012, 20:08
||- - Dron_Gus   Цитата(IgorKossak @ Jun 6 2012, 00:08) Ке...   Jun 5 2012, 20:24
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 6 2012, 04:53
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 07:53) На...   Jun 6 2012, 05:33
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 08:33) Вставил ...   Jun 6 2012, 06:22
|- - demiurg_spb   Цитата(TAutomatic @ Jun 6 2012, 09:22) вд...   Jun 6 2012, 06:30
|- - IgorKossak   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 06:44
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 08:43
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 11:43) У переме...   Jun 6 2012, 12:31
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 15:31) Я ...   Jun 6 2012, 13:05
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 16:05) Я провер...   Jun 6 2012, 13:48
- - ViKo   Проверил с тремя __packed. Так я не пробовал. ...   Jun 6 2012, 14:01
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 17:01) Проверил...   Jun 6 2012, 14:07
- - andrewlekar   Ребята, я вас умоляю, не делайте так в рабочем код...   Jun 7 2012, 04:45
|- - TAutomatic   Цитата(andrewlekar @ Jun 7 2012, 07:45) Р...   Jun 7 2012, 06:18
|- - Dron_Gus   Цитата(TAutomatic @ Jun 7 2012, 10:18) Да...   Jun 7 2012, 07:22
||- - TAutomatic   Цитата(Dron_Gus @ Jun 7 2012, 10:22) С пе...   Jun 7 2012, 08:16
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 14:16) Ну...   Jun 7 2012, 09:08
||- - Dron_Gus   Цитата(jcxz @ Jun 7 2012, 13:08) Позвольт...   Jun 7 2012, 09:20
||- - TAutomatic   Цитата(jcxz @ Jun 7 2012, 12:08) Позвольт...   Jun 7 2012, 09:40
||- - demiurg_spb   Цитата(TAutomatic @ Jun 7 2012, 12:40) Дв...   Jun 7 2012, 10:02
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:10
||- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 12:40) за...   Jun 7 2012, 10:16
|||- - jcxz   Цитата(ViKo @ Jun 7 2012, 16:16) Покажите...   Jun 7 2012, 10:20
||- - AHTOXA   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:17
||- - TAutomatic   Цитата(AHTOXA @ Jun 7 2012, 13:17) Может,...   Jun 7 2012, 10:27
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 09:18) Вс...   Jun 7 2012, 10:26
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:26) Вы не о ...   Jun 7 2012, 10:33
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 13:33) См...   Jun 7 2012, 10:58
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:58) При любо...   Jun 7 2012, 16:40
- - ViKo   Герберд Шилдт. Полный справочник по C. (в электрон...   Jun 7 2012, 05:53
- - andrewlekar   ЦитатаА при чем тут придет и не поймет rolleyes.gi...   Jun 7 2012, 06:40
|- - TAutomatic   Цитата(andrewlekar @ Jun 7 2012, 09:40) В...   Jun 7 2012, 07:04
- - exeron   Какой упоротый попался... Вам уже цитату из Шилдта...   Jun 7 2012, 10:33
- - KRS   Вообще то для того что бы расположить глобальные о...   Jun 7 2012, 20:19
|- - TAutomatic   Цитата(KRS @ Jun 7 2012, 23:19) Вообще то...   Jun 8 2012, 04:44
|- - demiurg_spb   Цитата(TAutomatic @ Jun 8 2012, 07:44) Со...   Jun 8 2012, 07:11
|- - KRS   Цитата(TAutomatic @ Jun 8 2012, 08:44) Ед...   Jun 8 2012, 09:44
- - esaulenka   Дурацкий вопрос: union-то зачем? Вполне достаточно...   Jun 8 2012, 09:59
|- - KRS   Цитата(esaulenka @ Jun 8 2012, 13:59) Дур...   Jun 8 2012, 12:19
- - brag   В Cortex-M3 выравнивание можно сказать, всегда нуж...   Jun 9 2012, 05:44
|- - TAutomatic   Цитата(brag @ Jun 9 2012, 08:44) Я всегда...   Jun 9 2012, 15:47
- - brag   Вешаем обработчик на исключение UsageFault, а в не...   Jun 9 2012, 16:34
- - TAutomatic   Цитата(brag @ Jun 9 2012, 19:34) Вешаем о...   Jun 9 2012, 18:34


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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 15:27
Рейтинг@Mail.ru


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