те конвенции придумали для взаимодействия между Си и ассемблером.
поскольку я Си не использую вообще, от слова совсем, мне эти конвенции по фигу. и я использую регистры, как мне угодно.
но, естественно, регистры r0 и r1 я не занимаю под постоянное использование, так как они используются в умножении. но остальные регистры я могу использовать для чего угодно.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
правильно
лично я пишу прямо в теле функции:
static u8 flg;[/uquote]
такая запись ограничивает область видимости переменной только телом функции (а точнее - фигурными скобками, внутри которых она описана). При этом значение такой переменной сохраняется между вызовами функции. Только вот причём здесь прерывания?
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4102288#p4102288"]Если не равняется, то вместо наложения маски будет сравнение и вычитание/сложение, вот и все.[/uquote]
На STM32 у меня так:
Спойлер
COKPOWEHEU писал(а):Пока что я вижу только явный недостаток с тем, что к полю размера нужен доступ и при записи, и при чтении. Но вы говорите, что такие реализации есть. Чем именно они настолько хороши, что перевешивают этот недостаток?
Мы о разных вещах говорим, ты пытаешься доказать превосходство одного из подходов, с чем я и не спорю, т.к., еще раз повторю, у меня самого размер отдельно не хранится, но есть и другие подходы где в переменную пишется из основного кода и прерывания, может они менее эффективные, зато накосячить тоже сложнее, пиши как хочешь, просто прерывания запрещай. Взять хоть либы для ардуино, там есть парочка RingBuf/RingBuffer, в обоих хранится размер, в одной используется ATOMIC_BLOCK, в другой - noInterrupts().
COKPOWEHEU писал(а):Ну так вариант с размером эту проблему не решает.
Вариант с размером предполагает отключение прерываний которое решает практически все проблемы, в том числе и вышеописанную.
те конвенции придумали для взаимодействия между Си и ассемблером.
Ну разумеется, нет!
Конвенции придумали чтобы программист не держал в голове слишком много, чтобы над одним проектом могло работать несколько человек и использовать сторонние библиотеки.
На STM32 у меня так:
Ну вот, сравнение и вычитание/сложение. Пусть у вас это и записано в виде тернарного оператора.
Мы о разных вещах говорим, ты пытаешься доказать превосходство одного из подходов
Нет, я написал что вижу явный недостаток другого подхода. Но ведь его используют. Значит, либо те, кто использует, дураки, либо я чего-то не знаю. Поэтому и спрашиваю что именно я не знаю.
Вариант с размером предполагает отключение прерываний которое решает практически все проблемы, в том числе и вышеописанную.
В том смысле, что для его использования надо применить настолько мощный костыль, что он попутно блокирует некоторые другие ошибки?