Обсуждаем контроллеры компании Atmel.
Ответить

Re: Таймеры/счётчики в AVR

Ср ноя 30, 2022 21:26:11

ну и? оба варианта могут быть? далее какой вывод?

Re: Таймеры/счётчики в AVR

Ср ноя 30, 2022 21:54:30

Выводы сами делайте, я всю информацию для этого дал.

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 07:47:52

ваша информация, как в том бородатом анекдоте: абсолютно точная и совершенно бесполезная. вам достаточно в подписи написать "лучше всех знаю стандарт С" и больше ничего не писать - эффект будет ровно тот же

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 09:17:23

Человек разумный скажет спасибо и примет к сведению, а не будет препинаться до усрачки.

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 11:38:01

причем тут препирание? я так и не понял сути, которую вы оставили мне искать самостоятельно. если бы я мог справиться самостоятельно с проблемой, я б молчал.

Добавлено after 1 minute 7 seconds:
мне нечего принимать к сведению, кроме того, что вы знаете стандарт Си лучше. но пользы для меня в этом нет

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 11:46:10

Читаем 6.3.1.1 и обнаруживаем, что может быть как int, так и unsigned int. Что примеры по моей ссылке и подтверждают.
оба варианта могут быть?
я так и не понял сути, которую вы оставили мне искать самостоятельно.
Всё вы прекрасно поняли.
если бы я мог справиться самостоятельно с проблемой, я б молчал.
Но предпочли включить дурачка и заболтать вопрос.

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 17:40:55

ну так оба варианта могут быть или один из?

чем тратить силы на подбор цитат, не лучше бы один раз дать конкретный ответ?

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 18:06:13

Куда уж конкретней? Во-первых,
Читаем 6.3.1.1 и обнаруживаем, что может быть как int, так и unsigned int.
Во-вторых, ссылка на стандарт с конкретным пунктом.
В-третьих, ссылка на код, демонстрирующий это.

Удивительно, вы дважды привели в качестве аргумента integer promotions и не удосужились прочитать в стандарте что же это такое. Давайте, я сделаю это за вас.
If an int can represent all values of the original type (as restricted by the width, for a bit-field), the
value is converted to an int; otherwise, it is converted to an unsigned int
. These are called the
integer promotions.

Re: Таймеры/счётчики в AVR

Чт дек 01, 2022 21:41:43

ладно, будем считать, что я по-английски бегло читаю.

итак, если значение влезает в int, то... вопрос: разве разность двух int8 может не влезть в int (для AVR он 16-битный)?

Добавлено after 2 minutes 9 seconds:
каждое int8, как я понимаю, превращается в int перед вычислением разности, но по модулю оба числа в 256 раз меньше MaxInt. следовательно, может ли разность оказаться uint-ом?

Добавлено after 6 minutes 38 seconds:
и, если может, то при каких условиях?

Re: Таймеры/счётчики в AVR

Сб дек 03, 2022 10:05:32

молчание затянулось...

Re: Таймеры/счётчики в AVR

Сб дек 03, 2022 20:48:29

А asm-код можно глянуть, где "это" там превращается и как?

Re: Таймеры/счётчики в AVR

Сб дек 03, 2022 20:52:21

после оптимизатора в асм код глядеть бесполезно... меня теория интересует.

Re: Таймеры/счётчики в AVR

Вс дек 04, 2022 14:39:48

Человек разумный скажет спасибо и примет к сведению, а не будет препинаться до усрачки.


Нет, мы будем препинаться! Ибо мы не привыкли отступать. "Это что ж это меня лохом должны считать! Нет. Ни в коем случае!" Сравните с нашими руководителями, похоже?(( Ужос! И ППЦ!

Re: Таймеры/счётчики в AVR

Вс дек 04, 2022 21:51:12

ARV писал(а):после оптимизатора в асм код глядеть бесполезно
Откуда оптимизатор может знать? Ведь для хранения переменной, которая может принимать всего два значения, к примеру 0 и 1, я могу задать тип переменной unsigned long int.

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 18:23:20

оптимизатор знает :)

во-первых, для переменных long и правило другое, речь-то шла о переменных "короче" int - так вот, они приводятся к "полноразмерному" int (хотя некоторые утверждают, что может и к uint) - и потом в вычислениях оптимизатор выбрасывает работу с "лишним" байтом

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 20:52:50

Вы меня не поняли.
Хорошо, пусть будет int или uint, и я буду пихать в эту переменную из вне какие нибудь данные, откуда компилятор будет знать что я буду запихивать, "короче" int или "длиннее"?
Так будет asm-код или нет? В stm32 я не силен в asm, но тут то я могу asm потрясти.

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 21:31:36

я буду пихать в эту переменную из вне какие нибудь данные, откуда компилятор будет знать что я буду запихивать, "короче" int или "длиннее"?
По типу данных. Не?
Так будет asm-код или нет?
У вас компилятор отобрали?
Изображение

А вот такого от GCC на -O3 я не ожидал совсем
Изображение


изображение_2022-12-06_212252151.png
(14.78 KiB) Скачиваний: 258
изображение_2022-12-06_212948984.png
(27.14 KiB) Скачиваний: 255

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 21:44:20

VladislavS писал(а):У вас компилятор отобрали?
Не вижу, где int превращается в uint.

Добавлено after 5 minutes 19 seconds:
VladislavS, PINB он r8, но этот файлик доступен, его не сложно превратить в r16. Не пойдет.
Интересует, на каком этапе int превращается в uint.

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 21:44:45

А вы об этом не спрашивали.

Re: Таймеры/счётчики в AVR

Вт дек 06, 2022 21:49:13

Но как? Двумя тремя сообщениями выше.
Меня то же интересует, на каком этапе вот это
VladislavS писал(а):Читаем 6.3.1.1 и обнаруживаем, что может быть как int, так и unsigned int.
может разделятся?
Ответить