|
Размер unsigned int или int Keil4.5 |
|
|
|
Jun 2 2012, 11:17
|
Участник

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

|
Добрый день, коллеги. Месяц использую LPC1768 и только сейчас с "ужасом" заметил, что под переменные unsigned int и int компилятор отводит по 4 байта. Использую среду Keil 4.5 и постоянно плююсь даже не по причине ее скудости, а по причине неудобности документации на нее и компилятор. Как установить "нормальный" размер этих типов данных размером в 2 байта? И второй вопрос. Я был уверен, что в Cortex-M3 отсутствует необходимость выравнивания разноразмерных типов данных. Об этом написано тутТем не менее, у себя в реале я этого не вижу. Если за однобайтовой переменной следует четырехбайтовая, то она все равно выравнивается по границе 32 разрядного слова, тоесть остается неиспользуемый промежуток в 3 байта. Что тут не так?
|
|
|
|
|
 |
Ответов
|
Jun 5 2012, 11:40
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Я бы предложил не заниматься всякой фигнёй. Особенно если нет твёрдого понимания, что вообще происходит. __packed, конечно, экономит память, но заметно сказывается на объеме программы (на не-кортексах) и на производительности (на любых армах). Кейл (в частности, 4.14 с включенным оптимизатором) достаточно догадлив, чтобы собрать данные в одну кучу. Код volatile char var_a; volatile int var_b; volatile char var_c; int main(void) { var_a = IOPIN0; var_b = IOPIN1; var_c = var_a + var_b; IOPIN0 = var_c; while (1); } Код var_a 0x40000000 Data 1 main.o(.data) var_c 0x40000001 Data 1 main.o(.data) var_b 0x40000004 Data 4 main.o(.data)
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Jun 5 2012, 20:24
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861

|
Цитата(IgorKossak @ Jun 6 2012, 00:08)  Кейлу следовало бы быть более тщательным в своей "догадливости" и разместить данные в порядке: var_b, var_a, var_c. Т. е. без разрыва, который в Вашем примере имеет место быть. Видимо, в разрыв было уже нечего запихать и от его положение ничего не менялось. Кстати, __packed char на производительность не влияет. А вот __packed short уже влияет. Даже на архитектурах, позволяющих невыравненное обращение.
--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
|
|
|
|
Сообщений в этой теме
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 aaarrr Char может быть расположен как угодно - на скорост... Jun 2 2012, 13:28 prottoss Цитата(aaarrr @ Jun 2 2012, 19:28) Char м... Jun 2 2012, 13:50  aaarrr Цитата(prottoss @ Jun 2 2012, 17:50) С пе... Jun 2 2012, 14:02   prottoss Цитата(aaarrr @ Jun 2 2012, 20:02) Объясн... Jun 2 2012, 14:23 TAutomatic Цитата(esaulenka @ Jun 5 2012, 14:40) Я б... Jun 5 2012, 16:57 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|