-
- Насколько помню, считывал регистр флагов и обрабатывал копию, а уже
затем рассматривал случай pending interrupt. Vit(236 знак., 26.04.2025 09:26)
- Я бы как-то так сделал VladislavS.(493 знак., 27.04.2025 08:28, ссылка, ссылка)
- Не боюсь показаться
невежейневеждой. Уточните, пожалуйста, что значит сентенция в условии оператора if()? Nikolay_Po(257 знак., 27.04.2025 11:36 - 17:50)- Это синтаксис плюсов. Примерно как первый аргумент в цикле for
работает. Поместил cr0 туда не для экономии скобок, конечно же, а
для ограничения зоны видимости cr0 только внутри if. Можно было и
до if её объявить, хуже не станет. Но повыпендриваться же надо :))) - VladislavS.(27.04.2025 13:14)
- А auto зачем указали? Тут, вроде бы, оно не нужно. - symbions(28.04.2025 22:13)
- Это плюсы, там другое. "Плюсы неисчерпаемы, как атом" © В.И.Ленин
:-) - SciFi(28.04.2025 22:25)
- Ленина не трогайте! Про плюсы писал Троцкий! - Kpoк(28.04.2025 22:47)
- Не за это ли его тавойт? Конечно, тогда холивары были суровые... - SciFi(29.04.2025 08:11)
- Какие времена, такие и холивары! - Kpoк(29.04.2025 08:15)
- Не за это ли его тавойт? Конечно, тогда холивары были суровые... - SciFi(29.04.2025 08:11)
- Да по ссылке на стандарт в примерах есть как с auto, так и без. так
что не ясно - symbions(28.04.2025 22:31)
- А что бы вы вместо auto написали? - VladislavS.(28.04.2025 23:14)
- Я такую конструкцию не знаю - поэтому так бы и не написал. Поэтому
и спрашиваю - для чего - может пригодится - symbions(28.04.2025 23:23)
- Простенький пример. Типы переменных тут забота компилятора - первая
double, вторая int. VladislavS.(20 знак., 29.04.2025 08:42, ссылка, картинка)
- Блин, не заметил, что в строке, с которой и начался вопрос, не
указан тип, а стоит auto. symbions(62 знак., 29.04.2025 09:23)
- Чегой-то? Питон ошибками задолбает - дескать, чего суёшь, тип не тот. Там неявная, но весьма строгая типизация. - Nikolay_Po(29.04.2025 10:03)
- Блин, не заметил, что в строке, с которой и начался вопрос, не
указан тип, а стоит auto. symbions(62 знак., 29.04.2025 09:23)
- Простенький пример. Типы переменных тут забота компилятора - первая
double, вторая int. VladislavS.(20 знак., 29.04.2025 08:42, ссылка, картинка)
- Я такую конструкцию не знаю - поэтому так бы и не написал. Поэтому
и спрашиваю - для чего - может пригодится - symbions(28.04.2025 23:23)
- А что бы вы вместо auto написали? - VladislavS.(28.04.2025 23:14)
- Ленина не трогайте! Про плюсы писал Троцкий! - Kpoк(28.04.2025 22:47)
- Это плюсы, там другое. "Плюсы неисчерпаемы, как атом" © В.И.Ленин
:-) - SciFi(28.04.2025 22:25)
- Спасибо. Сложность программы огранена лишь квалификацией
программиста... Это оно. - Nikolay_Po(27.04.2025 17:46)
- Pascal как раз уменьшает количество подобных наворотов. Однако -
"используя любой язык можно писать на ассемблере"(за точность
цитаты не ручаюсь). Думаю и на Паскале можно "писать на Си". Это не
в пику автору примера, а скорее напоминание, что писать чем проще -
тем лучше. Сам наталкивался: свой же код через год разбирать
тяжело, потому что было очередное " Афигеть! И так тоже можно?!
Вау!". - Dingo(28.04.2025 09:30)
- А как же тяга к прекрасному? Ну красота же? VladislavS.(1 знак., 28.04.2025 12:38, картинка)
- Колдун, однако! Это
препроцессортемплейт, который времени компиляции возвращает список (диапазон?) объектов? Или как оно? До какого места правильно? А generate вообще с 20++ только. - Dingo(29.04.2025 07:09)- Тут С++20 требует шаблонная лямбда. То же самое можно на С++17
сделать с помощью именованной шаблонной функции - будет делать то
же, но не так красиво. VladislavS.(216 знак., 29.04.2025 08:50)
- Как мне знакома вся эта "красота". Этот код работает на С++20 и не
работает на С++17. И (не побоюсь этого слова) - с точностью до
наоборот. il-2(1 знак., 29.04.2025 09:34, ссылка)
- У меня вопрос совместимости вот так решается. Со временем, как
основные компиляторы подтянут стандарты, нижняя ветка будет
почикана. VladislavS.(1 знак., 29.04.2025 12:33, картинка)
- :-) il-2(1 знак., 30.04.2025 05:56, картинка)
- Зато ваша проблема неактуальна. На любом стандарте и компиляторе собирается. - VladislavS.(30.04.2025 09:17)
- :-) il-2(1 знак., 30.04.2025 05:56, картинка)
- У этой болезни есть красивое название: "shiny object syndrome". - SciFi(29.04.2025 09:41)
- «Хорошо летают только красивые самолёты» - А.Н.Туполев - VladislavS.(30.04.2025 00:03)
- Это он не видел самолёта Су-25 - Kpoк(30.04.2025 07:51)
- Это нам ещё не показали исходники из авионики современных Су... - SciFi(30.04.2025 08:11)
- А что не так с Су-25? Всяко не гоблин =AlexD=(1 знак., 30.04.2025 08:07, картинка)
- Если честно, у Су-25 всё не так, кроме умения летать и не падать.
После аэрофлотских красавцев он выглядел каким-то заморышем. Ну и
последние штрихи к его "красоте" добавлял Тбилисский (только не
смейтесь) авиазавод, где их делали. - Kpoк(30.04.2025 08:55)
- Не всякий "красавец" вернётся со штурмовки так, как "Грач" или
Ил-2. - Toчкa oпopы(30.04.2025 09:06)
- Грач вместе с Илом в прошлом: со штурмовки современного поля боя не
вернутся оба. Поэтому Грачи теперь работают исключительно нарами с
кабрирования "куда-то в сторону противника...". Ушло время
многоразовых штурмовиков хоть пилотируемых хоть беспилотных. - 3m(30.04.2025 14:10)
- К НАРам бы головенку управляемую прикрутить - и дуже гарно было бы. - LightElf(30.04.2025 18:25)
- Дрон получится или планирующая бомба. Второе применяют в товарных
количествах только не Грачи а взрослые Утята. Смысл штурмовика -
непосредственная поддержка на поле боя дешевыми неуправляемыми
боеприпасами и он полностью утрачен! - 3m(30.04.2025 19:26)
- Получится дешевая (если в закромах завалялось много НАРов) управляемая ракета. Ну типа как УМПК сделал из обычных ФАБов дешевые УАБ. - LightElf(02.05.2025 18:59)
- Что имено получится - возможны варианты. Доступные и дешевые НАРы не раз брали за основу. Первые самонаводящиеся ракеты возду-воздух примерно так получились. - AlexG(01.05.2025 04:40)
- ПАНы имеют другое мнение, но кто их слушает, на боевых диванах? - mse homjak(30.04.2025 19:46)
- Дрон получится или планирующая бомба. Второе применяют в товарных
количествах только не Грачи а взрослые Утята. Смысл штурмовика -
непосредственная поддержка на поле боя дешевыми неуправляемыми
боеприпасами и он полностью утрачен! - 3m(30.04.2025 19:26)
- К НАРам бы головенку управляемую прикрутить - и дуже гарно было бы. - LightElf(30.04.2025 18:25)
- Грач вместе с Илом в прошлом: со штурмовки современного поля боя не
вернутся оба. Поэтому Грачи теперь работают исключительно нарами с
кабрирования "куда-то в сторону противника...". Ушло время
многоразовых штурмовиков хоть пилотируемых хоть беспилотных. - 3m(30.04.2025 14:10)
- Не всякий "красавец" вернётся со штурмовки так, как "Грач" или
Ил-2. - Toчкa oпopы(30.04.2025 09:06)
- Если честно, у Су-25 всё не так, кроме умения летать и не падать.
После аэрофлотских красавцев он выглядел каким-то заморышем. Ну и
последние штрихи к его "красоте" добавлял Тбилисский (только не
смейтесь) авиазавод, где их делали. - Kpoк(30.04.2025 08:55)
- Это он не видел самолёта Су-25 - Kpoк(30.04.2025 07:51)
- «Хорошо летают только красивые самолёты» - А.Н.Туполев - VladislavS.(30.04.2025 00:03)
- У меня вопрос совместимости вот так решается. Со временем, как
основные компиляторы подтянут стандарты, нижняя ветка будет
почикана. VladislavS.(1 знак., 29.04.2025 12:33, картинка)
- Как мне знакома вся эта "красота". Этот код работает на С++20 и не
работает на С++17. И (не побоюсь этого слова) - с точностью до
наоборот. il-2(1 знак., 29.04.2025 09:34, ссылка)
- Тут С++20 требует шаблонная лямбда. То же самое можно на С++17
сделать с помощью именованной шаблонной функции - будет делать то
же, но не так красиво. VladislavS.(216 знак., 29.04.2025 08:50)
- Всё и ничего одновременно. Магия! - Nikolay_Po(28.04.2025 13:25)
- Колдун, однако! Это
- А как же тяга к прекрасному? Ну красота же? VladislavS.(1 знак., 28.04.2025 12:38, картинка)
- Pascal как раз уменьшает количество подобных наворотов. Однако -
"используя любой язык можно писать на ассемблере"(за точность
цитаты не ручаюсь). Думаю и на Паскале можно "писать на Си". Это не
в пику автору примера, а скорее напоминание, что писать чем проще -
тем лучше. Сам наталкивался: свой же код через год разбирать
тяжело, потому что было очередное " Афигеть! И так тоже можно?!
Вау!". - Dingo(28.04.2025 09:30)
- А auto зачем указали? Тут, вроде бы, оно не нужно. - symbions(28.04.2025 22:13)
- Начиная с C++17 в операторе if() может присутствовать
init-statement. ЫЫyкпy(1 знак., 27.04.2025 12:52, ссылка)
- Спасибо. Применяли? - Nikolay_Po(27.04.2025 17:48)
- Бог миловал :))) - ЫЫyкпy(28.04.2025 09:54)
- Наш человек :-) - SciFi(28.04.2025 09:55)
- Бог миловал :))) - ЫЫyкпy(28.04.2025 09:54)
- Спасибо. Применяли? - Nikolay_Po(27.04.2025 17:48)
- Эта конструкция древна, как язык Си. Почти аналог фигурных скобок,
вроде как составной оператор, но с особенностями. Подробности я не
помню, да и не нужно их помнить. И писать так ИМНО не следует. Тут
это явно сделано ради экономии фигурных скобок. Ну - сэкономили. А
наглядность потеряна. - il-2(27.04.2025 12:36)
- Тут скорее аналогия с оператором for() прослеживается. - ЫЫyкпy(27.04.2025 13:03)
- В Си такого нет, не путайте с запятой. А писать так стоит, ибо cr0 только внутри if нужна. - VladislavS.(27.04.2025 13:18)
- Вы путаете с "оператор-запятая", нет? - Cкpипaч(27.04.2025 12:44)
- Тут скорее аналогия с оператором for() прослеживается. - ЫЫyкпy(27.04.2025 13:03)
- Grammar nazi рекомендуют в этом случае казаться невеждой. И звените. - Toчкa oпopы(27.04.2025 11:59)
- Это синтаксис плюсов. Примерно как первый аргумент в цикле for
работает. Поместил cr0 туда не для экономии скобок, конечно же, а
для ограничения зоны видимости cr0 только внутри if. Можно было и
до if её объявить, хуже не станет. Но повыпендриваться же надо :))) - VladislavS.(27.04.2025 13:14)
- Не боюсь показаться
- Я бы как-то так сделал VladislavS.(493 знак., 27.04.2025 08:28, ссылка, ссылка)
- вложенные прерывания разрешены? - sav6622(26.04.2025 09:07)
- Про |= и volatile уже написали. Я бы ещё двойные обращения к IR, CR0 и CR1 убрал. - VladislavS.(26.04.2025 08:59)
- объявление локальных переменных как volatile выглядит более чем
странно. - akz(25.04.2025 21:42)
- Чем?
Переменные могут изменяться в прерываниях. лучше [хуже тут не будет] дать компилятору по рукам чтобы не "улучшал". Плохо что инициализации нет - до первого использования. - POV(25.04.2025 21:49 - 21:58)- Это локальные переменные, они уже в перывании :) и нигде более не
используются. Атрибут volatile в данном случае meaningless. Как на
это среагирует компиллер - хз. Может никак а может их куда-нибдь
запердолить куда ему покажется более удобно/логично. Так что это
скорее способ анитиоптимизации и создание неопределенности. - akz(25.04.2025 21:57)
- Волатайл не может создавать неопределённость. По определению. - POV(25.04.2025 22:00)
- static инициализируется нулём. volatile тут действительно лишний --
этим переменным не поменяться за пределами этой ф-ции. - beefdeadbeef(25.04.2025 21:56)
- Да понятно... азы чего описывать. Просто так афтору может
спокойнее. Хуже-то не будет. А дефолтный нуль мождет оказаться
ненагляден при анализе кода. - POV(25.04.2025 21:58)
- Факты показывают, что аффтар не там соломку стелил :-) - SciFi(25.04.2025 22:01)
- автору станет спокойнее, когда не нужно будет волноваться за
букварные правила. - beefdeadbeef(25.04.2025 21:59)
- Вот не надо этого. А то начнется холивар за избыточные скобки типа
"автор должен на зубок знать приоритеты операций"... POV(131 знак., 25.04.2025 22:04)
- Через полгода-год автор (или его преемник) будет чесать тыкву: = 0
потому что собирался убрать static да забыл ? Зачем я это делал ?
Вотзефак ? beefdeadbeef(111 знак., 25.04.2025 22:10)
- Статик ставят вменяемые люди только ради сохранения значения по
выходу из функции. Если кодер по этому проекту не понимает данного
аспекта кода - то ему бесполезно подсказывать. Начальное значение
автор обязан учитывать если переменная используется до первого
присваивания... нечего там чесать (хоть статик хоть нет). - POV(25.04.2025 22:14)
- Ради такого случая можно и глобальную переменную замутить. В отладке можэт оказаться удобнее. - mse homjak(25.04.2025 22:17)
- Поэтому надо написать комментарий "// Обнулил явно для тех, кто не
знает, как работает статик. Если что, обнуляется только на старте.
Если стартап не покорёжен." :-))) - SciFi(25.04.2025 22:13)
- и непременно в cp1251, да - beefdeadbeef(25.04.2025 22:15)
- Статик ставят вменяемые люди только ради сохранения значения по
выходу из функции. Если кодер по этому проекту не понимает данного
аспекта кода - то ему бесполезно подсказывать. Начальное значение
автор обязан учитывать если переменная используется до первого
присваивания... нечего там чесать (хоть статик хоть нет). - POV(25.04.2025 22:14)
- Через полгода-год автор (или его преемник) будет чесать тыкву: = 0
потому что собирался убрать static да забыл ? Зачем я это делал ?
Вотзефак ? beefdeadbeef(111 знак., 25.04.2025 22:10)
- Вот не надо этого. А то начнется холивар за избыточные скобки типа
"автор должен на зубок знать приоритеты операций"... POV(131 знак., 25.04.2025 22:04)
- Да понятно... азы чего описывать. Просто так афтору может
спокойнее. Хуже-то не будет. А дефолтный нуль мождет оказаться
ненагляден при анализе кода. - POV(25.04.2025 21:58)
- Статические переменные инициализируются нулевым значением, разве
нет? - reZident(25.04.2025 21:52)
- Стартап-файл может быть изменён. Лучше явно прописать начальную
инициализацию. И код более читаем - будет ясно "что хотел сказать
автор". Я всегда для наглядности инициализирую переменные, даже
если нужен именно начальный ноль. - POV(25.04.2025 21:56)
- Можно подумать, явный ноль не в стартапе будет инициализирован. - VladislavS.(26.04.2025 08:50)
- Да. И volatile там лишний. Но ничего не сломает. - SciFi(25.04.2025 21:54)
- Стартап-файл может быть изменён. Лучше явно прописать начальную
инициализацию. И код более читаем - будет ясно "что хотел сказать
автор". Я всегда для наглядности инициализирую переменные, даже
если нужен именно начальный ноль. - POV(25.04.2025 21:56)
- Это локальные переменные, они уже в перывании :) и нигде более не
используются. Атрибут volatile в данном случае meaningless. Как на
это среагирует компиллер - хз. Может никак а может их куда-нибдь
запердолить куда ему покажется более удобно/логично. Так что это
скорее способ анитиоптимизации и создание неопределенности. - akz(25.04.2025 21:57)
- Чем?
- Мну полагает, что вот эти строки неправильны __LightElf(164 знак., 25.04.2025 21:28,
)
- +1. Никогда не работал с LPC, но тоже - как глянул код, сразу понял где собака порылась. Ключник программу писал. - il-2(26.04.2025 07:51)
- чатгпт поставил +1 framer(2431 знак., 25.04.2025 21:40)
- Ага. Логично. Чтение-модификация-запись: читается 0x00011000,
накладывается маска 0x00001000, получается то же самое число
0x00011000 и сбрасываются оба прерывания вместе. Спасибо! А
программист уверял меня, что все давно проверено и косяков тут быть
не может :-) - reZident(25.04.2025 21:37)
- Чепуха, при одновременном (синхронном) поступлении двух сигналов в
таком случае будет считать только первый счётчик и вот почему: Бoмж(1059 знак., 26.04.2025 14:56)
- Я предложил бы сделать так: Бoмж(639 знак., 26.04.2025 15:10)
- Перенести очистку флагов в начало. - VladislavS.(27.04.2025 07:30)
- Полезно также заглянуть в даташит: ЫЫyкпy(327 знак., 26.04.2025 15:29)
- Ну так в моём предложении именно это и произойдёт. Или есть другая интерпретация предложенного мной кода? Бoмж(159 знак., 26.04.2025 16:24)
- Я предложил бы сделать так: Бoмж(639 знак., 26.04.2025 15:10)
- Можно посоветовать ему попробовать свои силы в состязаниях по запутанному коду. Такие навыки имеют свою благодарную публику! SciFi(1 знак., 25.04.2025 21:41, ссылка)
- Чепуха, при одновременном (синхронном) поступлении двух сигналов в
таком случае будет считать только первый счётчик и вот почему: Бoмж(1059 знак., 26.04.2025 14:56)
- Насколько помню, считывал регистр флагов и обрабатывал копию, а уже
затем рассматривал случай pending interrupt. Vit(236 знак., 26.04.2025 09:26)