к чему эти метания?
К освоению. Си освоится легко и просто, вангую. А вот асм... Скажем, мне после MCS-51 АВРовские мнемоники кажутся... казались нечитаемыми. Почему "казались"? Потому как я и с 51-ми давно дел не имею, уже забыл. Но вот ему хочется освоить ассемблер...
можно же писать прошивку одновременно на аме и си. я не имею ввиду встроенный ассемблер. критические по времени выполнения функции и прерывания писать на асм, а всю рутину скинуть на си.
Угу, так полагается делать. Хотя нынче оптимизатор может приготовить код, работающий, пожалуй, быстрее самописного на ассемблере.
Оптимизаторы оптимизируют... не очень хорошо, скажем так. Например, что GCC, что мелкомягкая студия благополучно забывают содержимое регистров и постоянно их перезагружают, делают ненужные пересылки и т.д. и т.п. Можно согласиться, что хороший компилятор сделает код лучше, чем посредственный программист-ассемблерщик, но не более того. Хороший специалист сможет написать лучше -- другое дело, что это не всегда оправдано.
Но вот работать с низкоуровневыми вещами (в т.ч. с микроконтроллерами), не зная ассемблера вообще... Это не быть приличным специалистом в данной области. Ибо задачи разные, требования разные, ситуации тоже разные складываются. Может потребоваться "вылизать" особо критичный участок программы (у МК дури всё ж поменьше, чем у ПК), может потребоваться сделать что-то нестандартное, что на языке высокого уровня сложно или вообще невозможно (попробуйте хитрые манипуляции с указателем стека или там переключалку потоков сделать чисто на сях), может, наконец, потребоваться посмотреть, а что там компилятор нагенерил, когда всё написано правильно, но не работает (ошибки в компиляторах никто не отменял -- редко, но бывают странности), или когда глюк предположительно связан с используемой сторонней библиотекой, исходников которой нет.
В общем, человек правильно решил изучить ассемблер.