|
Размер 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 7 2012, 05:53
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Герберд Шилдт. Полный справочник по C. (в электронном виде не имею на русском языке, в книжке на русском еще понятнее). Page 144 - 145 Цитата Another error that sometimes occurs is caused by incorrect assumptions about the placement of variables in memory. In general, you cannot know where your data will be placed in memory, or whether it will be placed there the same way again, or whether different compilers will treat it in the same way. For these reasons, making any comparisons between pointers that do not point to a common object may yield unexpected results. For example,
char s[80], y[80]; char *p1, *p2; p1 = s; p2 = y; if(p1 < p2) . . .
is generally an invalid concept. (In very unusual situations, you might use something like this to determine the relative position of the variables. But this would be rare.)
A related error results when you assume that two adjacent arrays may be indexed as one by simply incrementing a pointer across the array boundaries. For example:
int first[10], second[10]; int *p, t; p = first; for(t=0; t<20; ++t) *p++ = t;
This is not a good way to initialize the arrays first and second with the numbers 0 through 19. Even though it may work on some compilers under certain circumstances, it assumes that both arrays will be placed back to back in memory with first first. This may not always be the case.
|
|
|
|
Сообщений в этой теме
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 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 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
|
|
|