реклама на сайте
подробности

 
 
> Cortex M3, M4 - разрядность переменных.
Allregia
сообщение Jul 11 2014, 11:47
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Какую разрядность переменных, лучше выбирать в случае когда "а пофиг" ?
Например флаг, который может быть 0 или1, максимум -1, или считающий до 10 счетчик, и тому подобное, когда можно и u8, и s8, и u32б и s32.
Памяти-то в Кортексах обычно более чем достаточно, и экономить нужно не всегда, но влияет-ли это на быстродействие программы?
Есть ли разница для локальных и глобальных переменных, и для volatile?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
adnega
сообщение Jul 13 2014, 07:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Все поняли вопрос?
Цитата
Какую разрядность переменных, лучше выбирать в случае когда "а пофиг" ?

Т.е. ограничений ни по размеру, ни по быстродействию нет, ибо "пофиг".
Ограничения по быстродействию или по размеру тут не обсуждается.
Насколько я понял, ТС просит "default type", когда выбор не очевиден и не играет роли.
Осмелюсь предположить, что в данном случае самым сильным критерием будет переносимость (в рамках M3/M4).
Очевидно, переносимость между компиляторами, средами, библиотеками и т.п.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jul 13 2014, 21:00
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 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.
А тем более для локальных переменных.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 14 2014, 05:40
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 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? sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 21:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016