Во-первых, си-компиляторы умнее вас, и код на си переведут в машинный лучше, чем если вы его напишете на ассемблере сами. Во-вторых, код нужно не только написать, но и поддерживать. А поддерживать надо читаемый код. В-третьих, для критических мест используются ассемблерные вставки. В-четвертых, написание кода на ассемблере занимает куда больше времени, чем на си. А в работе это бывает критично. И самое главное, не забывайте про переносимость кода.
Комментарии: 46
Dmitriy
Вот тут не соглашусь. Ничего лучше человеческого асма не скомпилирует. Нахрена тогда возможнось асм вставки делать? Другое дело, время написания программы. Тут уж разработчик сам решает. И если си не влазит в память, то почти всегда проще взять камень помощнее, с учетом времени написания кода, это всеравно будет дешевле...
Unsupported
Про дальнейшую поддержку полностью соглашусь. Чем изгибаться и выкраивать такты и байты, чтобы уместиться в слабый МК, проще взять МК помощнее (во всех смыслах) и написать нормально и понятно, и человек, который будет продолжать работу над проектом, сразу въедет. это сильно сэкономит время и деньги бизнесу
Dmitriy
Вопрос именно в экономической плоскости
Anonim
И вот тут приходит ардуина, на которой любой школьник делает простую задачу за полчаса, а какой-то дедос с высшим образованием месяц пишет на фортране с ассемблерными вставками, да ещё хочет сто тыщ зарплаты...
Dmitriy
Еще раз повторюсь, ни ОДИН оптимизатор не сделает код лучше человека. Другое дело - время. Именно поэтому в КРИТИЧЕСКИХ секциях используют вставки - это оптимальный и самый удачный и возможный вариант
Andrey
поправочка: ни один оптимизатор не сделает код лучше человека с айкью 180+, аутизмом и феноменальной памятью.
Indr1x
Тогда бы не существовало такого явления как демосцена и прочие compo челенджи
Andrey
думаю они и расчитаны на выявление таких одиночных случаев, как и всяческие олимпиады
Indr1x
Это не одинчные случаи это целое движение и условие для победы
Andrey
олимпиады это тоже целое движение только побеждают в них уникумы
Indr1x
Причем тут олимпиады? Может что где когда приплетем?
Andrey
нет, олимпиады выявляют определенные типы мышления, а что где когда - тупо на эрудированность.
Dmitriy
Вы преувиличиваете параметры фмзиологии
Andrey
я не преувеличиваю объем памяти, который необходимо задействовать
Indr1x
Где олимпиады и где оптимизация кода
Dmitriy
Давайте так. Зачем вы используете асм вставки?
Andrey
на самом деле я уже не помню когда последний раз ими пользовался. вот кастомные инструкции делал, но они вызывались макросом на сях... который вел кстати к ассемблерной вставке этой самой инструкции
Joric
я писал большие всякие штуки на асме. в конце чувствуешь себя довольно хреновым и уставшим компилятором. уже не до оптимизации там, быть бы живу. лучше маленькие штуки писать для ботлнеков
Anonim
>маленькие штуки писать для ботлнеков спорно
Dmitriy
Почему ваши инструкции не создает компилятор сам, на этапе оптимизации?
Anonim
Он о них не знает
Andrey
а Вы понимаете о чем речь?
Dmitriy
Вот... Немного
Andrey
и кстати уже есть такая штука как HLS и то о чем вы спрашиваете - все к этому тоже движется
Dmitriy
Да, потому что ресурсов уйма... Любая возможность сократить время написания привествуется .... Но это не глубина оптимиза. Это компромисс
Anonim
Если это то о чем я думаю — видел всратое, что-то типа HSL на C# для авр
Andrey
а инструкции процессора помимо моего случая это всегда жесткий базис, так как реализован в кремни и нене
Anonim
ну хай-левел синтез, только кода а не схемы
Andrey
не, это уже не то
Dmitriy
Схемы - это математика...
Anonim
Так-то всё математика От звука до кода
Dmitriy
Нет, не все....
Anonim
https://habr.com/ru/post/462409/
Dmitriy
Она отлично оптимизируется
Andrey
Так оно и есть. Поэтому люди не делают процессоры рисуя схемы на триггерах, а отдают все синтезаторам и используют специальные языки.
Anonim
То что пока не математика — просто недостаточно изучено
Dmitriy
Плис и код алу - немного разные вещи...
Andrey
разные но не немного. писать для кремния и писать для ПЛИС - безусловно есть различия, но многие принципы те же.
Anonim
Это никак не относится к "код на асм будет быстрее"
Andrey
когда чуть ли не сишный код становится схемой на уровне регистров
Andrey
потому что это не задача компилятора. компилятор делает работу в базисе инструкций процессора.
Dmitriy
Хорошо, но ссылка на вставку же есть...
Andrey
High Level Synthesis это сишный код в RTL
Andrey
Тут на соседнем канале рассказывали историю как пришел дедок который не верил в языки описания аппаратуры типа Verilog и все делал по старинке на триггерах) Его типа спросили а FFT за сколько вы сделаете - он такой "ну недели за две если не отвлекаться..." ))))
Dmitriy
Ну, ардуина, это для школьников неплохо.... Они тож стотысяч зарплаты хотят?