-
- Еще можно состояния автомата написать как функции, а автомат будет работать как вызов указателя на функцию. Nikolay801_(449 знак., 24.11.2023 09:15)
- Смотря какой смысл закладывать BlackMorda(1409 знак., 23.11.2023 23:09, ссылка)
- Да, так и есть. Я просто неправильно написал: Eddy_Em(561 знак., 23.11.2023 23:23)
- Ассемблер ARM прямо не узнать :-) - BlackMorda(23.11.2023 23:29)
- Вот, зашел на одноплатник с ARM64. Eddy_Em(2131 знак., 23.11.2023 23:38)
- ☺ естественно, на ПК я просто x86-64 и использовал. Но это - gcc, для арма он так же функции бы развернул. Кому хочется - пусть соберут, код я привел. - Eddy_Em(23.11.2023 23:30)
- Ассемблер ARM прямо не узнать :-) - BlackMorda(23.11.2023 23:29)
- Да, так и есть. Я просто неправильно написал: Eddy_Em(561 знак., 23.11.2023 23:23)
- Никаких ИФ, никаких СВИЩ в выборе нового шага задачи не должно быть
вообще. - Eпифaн(23.11.2023 23:05, )
- а их и не будет, господа редко в асм смотрят и новые компиляторы не используют. gcc текущего разлива свитч генерит в виде таблицы адресов вызовов соответствующих веток RB-дерева. никаких переборов сейчас и сравнений не делается. за исключением если уж совсем рукожопо написано что даже хеш не может линейный индекс обеспечить для таблицы. - klen(24.11.2023 13:08)
- На современных армах о такой фигне просто не надо думать. Надо
думать о бизнес-логике, или как там её. Чтобы всё работало
правильно, одним словом. - SciFi(23.11.2023 22:02)
- а баба яга не согласная... мы уже видели что с людями делает Делфи - потерянное поколение. думать всегда нужно. - klen(24.11.2023 13:09)
- тогда свитч маст дай! - IBAH(23.11.2023 22:04)
- как-то меня неприятно в лужу посадили. Было два свитча с одной переменной в разных местах. Так программа перепрыгивала с одного свитча на другой с одинаковым case (но с разным содержимым). Пришлось создать дубль переменной. - Лaгyнoв(24.11.2023 09:00)
- Ты асм свитча погляди, а потом делай выводы - POV(23.11.2023 22:19)
- Логика понятна. Но компиляторы стали такие умные, что они цепочку
ифов, сами должны заменять свитчем. Ушло же в небытие присваивание
со сложением - IBAH(23.11.2023 22:37)
- Как ушло? Куда? Мне не сообщали... - Idler(24.11.2023 15:05)
- Я видел свитчи... POV(361 знак., 23.11.2023 22:43)
- За заглядывание в асм следует отвешивать подзатыльник. Погромизд
должен выдавать работающий код, а не заглядывать в асм. - SciFi(23.11.2023 22:22)
- Таки да! Но заглянуть чтобы больше не нести всякую ересь
отталкиваясь только от своих предположений - можно... POV(250 знак., 23.11.2023 22:26)
- Который из нескольких уровней ереси ви таки имели в виду? Проще
оставить как есть и надеяться на лучшее... - SciFi(23.11.2023 22:29)
- Ну таки я так и делаю. Просто иногда раздраждают утверждения, как
от Ивана, в которых информации [знаний] ноль - он просто
предположил, что оно вот ак делается, и из этого выводит все
дальнейшие рассуждения. - POV(23.11.2023 22:30)
- Хорошо-хорошо. Пусть живет и здравствует switch-case! Долгих лет жизни ему и кодового благополучия! Банзай, switch-case! - IBAH(23.11.2023 22:42)
- Где утверждения?! это доведение до абсурда. IBAH(1 знак., 23.11.2023 22:39, ссылка)
- Ну таки я так и делаю. Просто иногда раздраждают утверждения, как
от Ивана, в которых информации [знаний] ноль - он просто
предположил, что оно вот ак делается, и из этого выводит все
дальнейшие рассуждения. - POV(23.11.2023 22:30)
- Который из нескольких уровней ереси ви таки имели в виду? Проще
оставить как есть и надеяться на лучшее... - SciFi(23.11.2023 22:29)
- Таки да! Но заглянуть чтобы больше не нести всякую ересь
отталкиваясь только от своих предположений - можно... POV(250 знак., 23.11.2023 22:26)
- Логика понятна. Но компиляторы стали такие умные, что они цепочку
ифов, сами должны заменять свитчем. Ушло же в небытие присваивание
со сложением - IBAH(23.11.2023 22:37)
- Дык, ведь если в автомате перечисляются все кейсы enum'а, то
компилятор просто сделает табличный переход - никаких ифов в
итоговом асме не будет. Это если дыры большие, то по сути та же
группа if'ов выйдет. - Eddy_Em(23.11.2023 21:58)
- А если без enum'а. Я пишу так IBAH(508 знак., 23.11.2023 22:05)
- Не, тут свич нафиг не нужен. Но я таки порекомендовал бы enum
использовать или хотя бы набор define'ов: не ровен час, добавится
еще одно состояние, и пойдет свистопляска… Ну или просто захочется
изменить номер состояния где-то… Eddy_Em(219 знак., 23.11.2023 22:07, ссылка)
- То есть, компилятор соптимизирует вычисление переменной состояния? - IBAH(23.11.2023 22:14)
- Ага. Пример: есть у нас состояния 0..10. Мы их в свиче перечислили.
Далее gcc видит это, и делает нечто вроде массива адресов перехода
(goto label, как говорится). По номеру состояния берет адрес и туда
"прыгает", выполняя дальнейший код (а там уже если есть break,
будет еще одно goto - в хвост, если же нужен fallthru, пойдет в
следующий кейс). - Eddy_Em(23.11.2023 22:19)
- Как свитч работает я прекрасно понимаю. Я одно не понимаю хватит ли
ума у компилятора, цепочку ифов заменить свитчем? - IBAH(23.11.2023 22:36)
- Ну, а почему бы не проверить? Берем простейший код Eddy_Em(1340 знак., 23.11.2023 23:19)
- НЕТ! Сам свитч может быть реализован для разных кейсов по-разному.
Скорее кейм может перевратиться в набор проверок (if'ов) - POV(23.11.2023 22:45)
- Кстати, показательный пример - ПЛИС... POV(303 знак., 23.11.2023 22:48, ссылка)
- Как свитч работает я прекрасно понимаю. Я одно не понимаю хватит ли
ума у компилятора, цепочку ифов заменить свитчем? - IBAH(23.11.2023 22:36)
- Ага. Пример: есть у нас состояния 0..10. Мы их в свиче перечислили.
Далее gcc видит это, и делает нечто вроде массива адресов перехода
(goto label, как говорится). По номеру состояния берет адрес и туда
"прыгает", выполняя дальнейший код (а там уже если есть break,
будет еще одно goto - в хвост, если же нужен fallthru, пойдет в
следующий кейс). - Eddy_Em(23.11.2023 22:19)
- Это не Magick numbers, это наследие Бэйсика, и поэтому нумерация
строк через 10 - IBAH(23.11.2023 22:12)
- Сами числа вместо полей enum или define'ов - это и есть magick numbers, низязя так. - Eddy_Em(23.11.2023 22:17)
- То есть, компилятор соптимизирует вычисление переменной состояния? - IBAH(23.11.2023 22:14)
- Не, тут свич нафиг не нужен. Но я таки порекомендовал бы enum
использовать или хотя бы набор define'ов: не ровен час, добавится
еще одно состояние, и пойдет свистопляска… Ну или просто захочется
изменить номер состояния где-то… Eddy_Em(219 знак., 23.11.2023 22:07, ссылка)
- А если без enum'а. Я пишу так IBAH(508 знак., 23.11.2023 22:05)