|
Размер 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 2 2012, 11:30
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(TAutomatic @ Jun 2 2012, 15:17)  Как установить "нормальный" размер этих типов данных размером в 2 байта? Никак. 32-х битный int для 32-х битной архитектуры - это и есть норма. Используйте short или типы из <stdint.h>. Цитата(TAutomatic @ Jun 2 2012, 15:17)  И второй вопрос. Я был уверен, что в Cortex-M3 отсутствует необходимость выравнивания разноразмерных типов данных. Об этом написано тутТем не менее, у себя в реале я этого не вижу. Если за однобайтовой переменной следует четырехбайтовая, то она все равно выравнивается по границе 32 разрядного слова, тоесть остается неиспользуемый промежуток в 3 байта. Что тут не так? Необходимость необходимости рознь - эффективность работы с выровненными данными выше, поэтому без нужды паковать их не следует. Используйте в случае нужды модификатор __packed.
|
|
|
|
|
Jun 2 2012, 11:43
|
Участник

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

|
Цитата(aaarrr @ Jun 2 2012, 14:30)  Используйте в случае нужды модификатор __packed. Так можно упаковать только структуры и битовые поля, не так ли? Переменные базовых типов так не упакуешь. Цитата(ohmjke @ Jun 2 2012, 14:37)  И где это для МК подразумевалось 2 байта?
Еще из википедии: Я согласен с Вами, офицального признания, что int- это 2 байта, нет. Это есть определенное неофицальное соглашение. Впрочем, нет смысла спорить, да я и не за тем спрашиваю. В большенстве систем, даже 32х или даже 64х разрядных есть двухбайтовые типы данных. Получается, в ARM нет двухбайтового типа данных?
|
|
|
|
|
Jun 2 2012, 11:53
|
Участник

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

|
Цитата(aaarrr @ Jun 2 2012, 14:49)  А вы попробуйте  Подскажите метод, как упаковать? Код unsigned char A; unsigned long B; unsigned char C; что бы получилось занятыми в памяти не 12 байт, а 6 байт? Буду весьма благодарен.
|
|
|
|
|
Jun 2 2012, 12:43
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(TAutomatic @ Jun 2 2012, 15:53)  Подскажите метод, как упаковать? Код unsigned char A; unsigned long B; unsigned char C; что бы получилось занятыми в памяти не 12 байт, а 6 байт? Буду весьма благодарен. Сами решили не пробовать даже? Код unsigned char a; __packed unsigned long b; unsigned char c;
|
|
|
|
Сообщений в этой теме
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  TAutomatic Получается, все же есть в <stdint.h> - short... Jun 2 2012, 11:47    prottoss Цитата(TAutomatic @ Jun 2 2012, 17:53) По... Jun 2 2012, 12:20     TAutomatic Цитата(prottoss @ Jun 2 2012, 15:20) Вам ... Jun 2 2012, 12:36     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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|