ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
748690 Топик полностью
my504 (09.04.2017 18:33 - 18:44, просмотров: 372) ответил Apтём на Спорно.
1. Простота кода в Си оборачивается достаточно сложными АСМ конструкциями, а после оптимизации еще и не поддающимися отладке. Возникает противоречие: неоптимизированный код поддается дебагу, но не соответствует по времени исполнения окончательному, что в сигнальных задачах совершенно неприемлимо. Приходится заставляеть компилятор получать искомое перректальными и совершенно непереносимыми способами как то делать то, что требуется с требуемой скоростью. Простота оказывается химерой. 2. Выигрыш есть всегда, потому что на АСМе соблюдаются все соглашения и правила компилятора, только отсутствует типичный сценарий, который свойственен любому автомату. В результате получается очень компактный код с сохранением отладки. Трудоемкость конечно поболее, но только первый раз. В дальнейшем оптимизированные до предела функции кочуют в следующие проекты. А если требуется их допилить в частностях, это сделать элементарно, потому что автором являешься сам и все подробно комментировано. Скажем, извлечение корня можно делать не из 32 разрядов, а из 24 (или вообще разрядность может быть параметрической), потому что АЦП 12-разрядный знаковый и получить более 24 разрядов при возведении в квадрат ну никак не выйдет. Или сортировка пузырьком на Си в 1,2...1,5 раз дольше, чем на АСМ, а нащщет читаемости еще можно поспорить где она выше. 3. Трудоемкость. Как уже сказал выше - первый раз. Задачи обычно типичные для окучиваемой ниши и функции кочуют из проекта в проект практически без изменений. Формально наперегонки написать текст на Си будет конечно быстрее, но в затратах времени на создание прибора это непринципиальная мелочь. Затраты времени совсем не этом. 4. Какая разница кто чем занимается: копипастой или написание заново? Важно что имеем на выходе. Я придерживаюсь простого правила. Задачи типа чужих стеков протоколов пишу на "языке оригинала" и тогда остальной код проекта тоже. Хотя может быть и смешанный код по разным причинам. Например, компиляторы не поддерживают ненативные блоки контроллера типа DSP. А если основные задачи именно DSP, а громоздкие протоколы (TCP/IP, USB и т.п.) отсутствуют, проще сразу все писать на АСМе. Но структура программы всегда подобна Си и даже соблюдаются соглашения о передаче переменных. 5. Последнее. Чтобы на АСМе писать быстро и качественно, нужно очень хорошо знать архитектуру платформы. Это дает хорошие преимущества по сравнению с типовым кодингом в стиле заезжего гастролера - не важно какая платформа - Си все переварит.