Задать вопрос

Программирование МК, ASM действительно на 30-40% эффективнее Си?

Всем привет!
Читаю книгу по программированию микроконтроллеров, автор пишет, что прошивки на Си на 30-40% менее эффективны, нежели на Ассемблере.

Скажите, это действительно так?

Просто, Си гораздо легче и я его базово знаю, а Ассемблер совсем непонятен, придется сильно напрячь мозги, чтобы его освоить, если это действительно так.
То есть, без вариантов учить Ассемблер, если хочу стать хорошим Embedded Engineer или можно обойтись Си?

Спасибо!
  • Вопрос задан
  • 610 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
@evgeniy_lm
Написать сложную программу на Assembler оочень сложно, но высокоскоростной код для обработки информации в реальном времени на Си не напишешь. По этому хороший программист должен знать и уметь использовать и Assembler и Си. Ко всему прочему без хорошего знания железа в программировании МК делать нечего, а разобраться в железе без Assembler не возможно.
Ответ написан
@Mirn
это не правда,
делая отлично всякую мелочь ручками на асме упустишь всё остальное, т.к. оптимизируешь что-то одно, а в целом выйдет коряво.
Современные же компиляторы и в целом и в частностях срабатывают получше людей, они делают хорошо сразу всё, пусть не идеально но сразу всё хорошо. Т.е. может один вызов или цикл сделают на 1-2 такта побольше и на пару байт побольше человека, но в общей картине выходит порой В РАЗЫ меньше и быстрее чем человек.

Высказывание автора про 30-40% хуже можно объяснить только тем что в начале 2000ых для МК компиляторы были не развиты. Теперь же на арм gcc выдаёт отличный код который уделывает даже мастера асма который старался написать минимальную прогу на асме и доказывал что только на нём это можно сделать.
НО я взял просто gcc и просто и тривиально в лоб написал прогу и она сразу вышла меньше чем результат его статьи
https://habrahabr.ru/post/274901/#comment_8738493

вывод: упор на асм и такие заявления в современном мире равноценны признанию в своей некомпетентности.
А асм сам выучится по практике. главно на СИ уметь писать хорошо и знать язык и компилятор отлично.
Одним Си обойтись можно. И даже нужно! Хотя-бы потому что надо в начале изучить что-то одно а не научившись ходить записывать в мировую олимпиаду. Многие люди кодят на си не зная асма и проблем не имеют ни с быстродействием нисчем другим.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexSku
не буду отвечать из-за модератора
Когда-то давно купил книжку "написание драйверов на ассемблере". Были примеры для Windows3. Как только дошёл до Windows NT, автор написал: "дальше драйверы будем писать на Си". Спрашивается, зачем такой заголовок?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы