|
Cortex M3, M4 - разрядность переменных. |
|
|
|
Jul 11 2014, 11:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Какую разрядность переменных, лучше выбирать в случае когда "а пофиг" ? Например флаг, который может быть 0 или1, максимум -1, или считающий до 10 счетчик, и тому подобное, когда можно и u8, и s8, и u32б и s32. Памяти-то в Кортексах обычно более чем достаточно, и экономить нужно не всегда, но влияет-ли это на быстродействие программы? Есть ли разница для локальных и глобальных переменных, и для volatile?
Спасибо.
|
|
|
|
|
 |
Ответов
|
Jul 13 2014, 07:43
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Все поняли вопрос? Цитата Какую разрядность переменных, лучше выбирать в случае когда "а пофиг" ? Т.е. ограничений ни по размеру, ни по быстродействию нет, ибо "пофиг". Ограничения по быстродействию или по размеру тут не обсуждается. Насколько я понял, ТС просит "default type", когда выбор не очевиден и не играет роли. Осмелюсь предположить, что в данном случае самым сильным критерием будет переносимость (в рамках M3/M4). Очевидно, переносимость между компиляторами, средами, библиотеками и т.п.
|
|
|
|
|
Jul 13 2014, 21:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(adnega @ Jul 13 2014, 09:43)  Все поняли вопрос?
Т.е. ограничений ни по размеру, ни по быстродействию нет, ибо "пофиг". Ограничения по быстродействию или по размеру тут не обсуждается. Насколько я понял, ТС просит "default type", когда выбор не очевиден и не играет роли. Осмелюсь предположить, что в данном случае самым сильным критерием будет переносимость (в рамках M3/M4). Очевидно, переносимость между компиляторами, средами, библиотеками и т.п. Нет, не совсем так. Я наверное не очень ясно выразился. Под "пофиг" - имелось ввиду две вещи: 1) переменная типа флага, или считающего до 10 счетчика. Ее можно разместить и в байте и в ворде и в инте. 2)что памяти в этих процах как правило, более чем достаточно, и экономить ее используя именно байт - смысла нет, если это не дает каких-то других преимуществ. А вот быстродействие как раз очень даже интересовало. В общем, я понял что за исключением каких-то специальных случаев, юнитов, структур и больших массивов - надо не морочить себе голову и использовать u32,s32,vu32,vs32. А тем более для локальных переменных.
|
|
|
|
|
Jul 14 2014, 05:40
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Allregia @ Jul 14 2014, 03:00)  В общем, я понял что за исключением каких-то специальных случаев, юнитов, структур и больших массивов - надо не морочить себе голову и использовать u32,s32,vu32,vs32. Вы поняли неправильно. Надо включить стандартный заголовок <stdint.h> и использовать: - uint_fast8_t для перемннных, значение которых не превысит 0xFF, - uint_fast16_t для перемннных, значение которых не превысит 0xFFFF, - uint_fast32_t для остальных. Если нужны переменные со знаком, то берите int_fastX_t. В этом случае компилятор выберет для вас оптимальный по скорости размер переменной. Понятно, что для 32-разрядных процессоров компилятор выберет 32-разрядные переменные. Но при смене платформы это может измениться. Мало ли, захочется вам перенести какой-нибудь алгоритм на AVR. И как там себя будут чувствовать 32-битные счётчики цикла от 0 до 10?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
Allregia Cortex M3, M4 - разрядность переменных. Jul 11 2014, 11:47 ViKo Есть. Задавайте всё int, если ОЗУ у вас с избытком... Jul 11 2014, 12:03 jcxz Цитата(Allregia @ Jul 11 2014, 17:47) Ест... Jul 11 2014, 16:10 Сергей Борщ На любом совершенно процессоре подключить к програ... Jul 12 2014, 06:33 ViKo И еще stdbool.h, и использовать bool тип. Jul 12 2014, 07:06 demiurg_spb Цитата(ViKo @ Jul 12 2014, 11:06) И еще s... Jul 12 2014, 08:41  ViKo Цитата(demiurg_spb @ Jul 12 2014, 11:41) ... Jul 12 2014, 09:03   demiurg_spb Цитата(ViKo @ Jul 12 2014, 13:03) Тогда -... Jul 12 2014, 09:56    ViKo Цитата(demiurg_spb @ Jul 12 2014, 12:56) ... Jul 12 2014, 10:33    Allregia Цитата(demiurg_spb @ Jul 12 2014, 11:56)1... Jul 12 2014, 10:42     ViKo Цитата(Allregia @ Jul 12 2014, 13:42) Спа... Jul 12 2014, 10:49      jcxz Цитата(ViKo @ Jul 12 2014, 16:49) Первое ... Jul 13 2014, 04:29 skripach Разница конечно есть, но она ничтожна, нужно испол... Jul 12 2014, 09:42 Allregia Еще пара вопросов про плавающую точку:
1) как я ... Jul 12 2014, 22:03 ms1 Цитата(Allregia @ Jul 13 2014, 01:03) Отк... Jul 12 2014, 22:22 DASM Дайте пожалуйста, ссылку, где вы усмотрели write-... Jul 13 2014, 04:40 jcxz Если Вы потрудитесь открыть например "Cortex-... Jul 13 2014, 04:55 DASM Уточню, есть ли он в однокристаллках all-in-one, т... Jul 13 2014, 05:08 jcxz Вообще-то топик не про какой-то конкретный проц, а... Jul 13 2014, 06:04  ViKo Цитата(jcxz @ Jul 13 2014, 09:04) Вообще-... Jul 13 2014, 06:35   jcxz Цитата(ViKo @ Jul 13 2014, 12:35) В M3 и ... Jul 13 2014, 06:55 DASM Может и ошибаюсь. Jul 13 2014, 06:06 DASM Не очень понимаю смысл кеша, расположенного на вне... Jul 13 2014, 07:15 demiurg_spb Цитата(DASM @ Jul 13 2014, 11:15) Не очен... Jul 13 2014, 08:42 A. Fig Lee Цитата(adnega @ Jul 13 2014, 03:43) Все п... Jul 13 2014, 13:09  adnega Цитата(A. Fig Lee @ Jul 13 2014, 17:09) i... Jul 13 2014, 15:46   A. Fig Lee Цитата(adnega @ Jul 13 2014, 11:46) Я вез... Jul 13 2014, 17:42    adnega Цитата(A. Fig Lee @ Jul 13 2014, 21:42) Т... Jul 13 2014, 18:37 andrewlekar АНТОХА, +1.
Не используйте u32, s32 и подобную ере... Jul 14 2014, 06:40 Сергей Борщ Цитата(andrewlekar @ Jul 14 2014, 09:40) ... Jul 14 2014, 07:23 andrewlekar Будет не меньше байта: для счётчиков, флагов хвати... Jul 14 2014, 07:27
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|