-
- Я нашел для себя такой компромисс: глобальные переменные держу какой нужно разрядности, а локальные объявляю через "быстрые" типы - uint_fast8_t и т.д. - il-2(06.06.2018 18:11)
- Вы ещё используете глобальные переменные? user__(17 знак., 06.06.2018 18:31, )
- В зависимости от того, какие цели вы преследуете: если вам нужно "быстрааа", то в <stdint.h> есть (u)int_fast(8|16|32|64)_t, если нужна гарантия вместимости величины - (u)int_least(8|16|32|64)_t, если ваш код исходит из конкретных особенностей (к lloyd(207 знак., 06.06.2018 15:59)
- у меня в принципе с STM32 нигде нет проблем ни с памятью (как ОЗУ, так и ПЗУ), ни с быстродействием. Вопрос возник только из-за того, что внезапно получился невыровненный массив дял записи во флэшку через FatFS. И в результате файлы больше 500 Лагунов(175 знак., 06.06.2018 17:12)
- У нас с тобой был разговор на эту тему. - il-2(07.06.2018 18:44, ссылка)
- я тогда забил, и больше не попадал. А тут опять. :-) Но вот умные люди показали как принудительно выравнивать. Примерно вотак - Лагунов(695 знак., 08.06.2018 07:14)
- А какая директива должна быть, что бы выровнять элементы массива. Я порылся и для IAR нашел только Sl(69 знак., 06.06.2018 20:07)
- Можно сделать union со своим массивом и uint32_t, к примеру. Обычно uint32_t выравнивается кратно 4, массив автоматически тоже. - SciFi(06.06.2018 20:16)
- #pragma data_alignment = 4 - йцукен(06.06.2018 20:14)
- Невыровненный массив из 500 байт записывался, я из 501 не записывался? Сдаётся мне, дело было не в выравнивании. - йцукен(06.06.2018 19:48)
- думаю, что там еще у меня что-то сидит. Умные люди вот дали ссылку на английском - "FatFS f_write not working Лагунов(3 знак., 07.06.2018 08:26, ссылка)
- Обычно такое бывает когда кривой IO драйвер FatFS не умеет работать с некратными данными, налетал на такое. - Hives(07.06.2018 14:16, )
- думаю, что там еще у меня что-то сидит. Умные люди вот дали ссылку на английском - "FatFS f_write not working Лагунов(3 знак., 07.06.2018 08:26, ссылка)
- Я смотрел, что IAR для Cortex M3 генерит. misyachniy(456 знак., 06.06.2018 19:17)
- А это вообще очень отдельный вопрос. pragma pack в помощь. - Николай Коровин(06.06.2018 18:44)
- У нас с тобой был разговор на эту тему. - il-2(07.06.2018 18:44, ссылка)
- у меня в принципе с STM32 нигде нет проблем ни с памятью (как ОЗУ, так и ПЗУ), ни с быстродействием. Вопрос возник только из-за того, что внезапно получился невыровненный массив дял записи во флэшку через FatFS. И в результате файлы больше 500 Лагунов(175 знак., 06.06.2018 17:12)
- Как правило, для работы с переменными меньшей разрядности компилятор вставляет доп. инструкции. Например, занулить старшие биты регистра. Ну и вообще, int - это лепо, не в последнюю очередь из-за того, что это всего 3 буквы. - SciFi(06.06.2018 14:56)
- Пазвольте! в каком-то програминг мануале видел, что АРМ аппаратно поддерживает типы данных от int8 до int32, правда где не помню... И что характерно, misyachniy это подтверждает. - IBAH(06.06.2018 20:24, ссылка)
- Поддерживает в том смысле, что кроме инструкций STR и LDR есть SRTB, STRH, LDRB, LDRH. Арифметические и логические операции 32-битные. Обычно это без разницы, но не всегда. Например, йцукен(569 знак., 06.06.2018 21:00)
- Из тона вашего заявления читаю желание возразить. Тем не менее, по сути никаких противоречий с написанным мной не вижу. Не это ли называется "когнитивным диссонансом"? - SciFi(06.06.2018 20:26)
- CISC использует лишние микрокоманды, а RISC обычно вообще софтово обрезает за неимением (да-да, доп. инструкции). Так что это вопрос баланса: скорость и объём кода vs объём данных. Николай Коровин(74 знак., 06.06.2018 16:15)
- "Папрашу" без глупостей. Не микрокоманды, а префиксы смены разрядности. - misyachniy(06.06.2018 20:56)
- <stdint.h> или user__(97 знак., 06.06.2018 15:35, )
- сам ты масдай - SciFi(06.06.2018 15:38)
- Аргументируй! C user__(17 знак., 06.06.2018 17:01, )
- Классика :) - Николай Коровин(06.06.2018 18:59, ссылка)
- Аргументируй! C user__(17 знак., 06.06.2018 17:01, )
- сам ты масдай - SciFi(06.06.2018 15:38)
- доверюсь профессионалу. :-) - Лагунов(06.06.2018 15:22)
- Читайте мелкий шрифт. Если после моих советов ваши бензоколонки будут делать перелив, а не недолив, я не виноват :-) - SciFi(06.06.2018 17:45)
- и всяко бывало :-) - Лагунов(07.06.2018 08:28)
- Читайте мелкий шрифт. Если после моих советов ваши бензоколонки будут делать перелив, а не недолив, я не виноват :-) - SciFi(06.06.2018 17:45)
- Пазвольте! в каком-то програминг мануале видел, что АРМ аппаратно поддерживает типы данных от int8 до int32, правда где не помню... И что характерно, misyachniy это подтверждает. - IBAH(06.06.2018 20:24, ссылка)
- Я нашел для себя такой компромисс: глобальные переменные держу какой нужно разрядности, а локальные объявляю через "быстрые" типы - uint_fast8_t и т.д. - il-2(06.06.2018 18:11)