Форум myROBOT.ru » Роботы и робототехника » Делимся опытом » Нужна помощь по С и программированию МК

Страниц (3): « 1 2 [3]
 

31. mogikanin - 14 Февраля, 2011 - 11:59:19 - перейти к сообщению
Споры "СИшников" и "Ассемблерщиков" в Интернете видел. Знаком с (+) и (-) обеих языков. В споры не ввязывался. Для себя однозначно: "Ассемблер - самый "железный" язык". Тем более - Ассемблер 2. Дизассемблировал свои же программы СИ (переделанные из работавшего Ассемблера) ужаснулся, как безобразно относится к железу СИ. С другой стороны и плюсы увидел, в основном - сокращение времени проектирования за счёт возможности использования других готовых программ.
32. cjA - 14 Февраля, 2011 - 15:08:02 - перейти к сообщению
asm и _asm- зависит от компилятора и вызывает зависимость от компилятора Подшучивать, дразнить

пишите свои процедуры на классическом асме, делайте заголовочный файл и подсовывайте в Си на уровне сборщика. (я бы так сделал, изучать встроеный асм- это изучать еще один язык)
правда не понятно зачем вам асм в Си, я его встраивал когда нужно было матрицы умножать, там действительно критично было
33. Белый Волк - 14 Февраля, 2011 - 15:09:06 - перейти к сообщению
mogikanin
Для справочной информации по GCC, который используется в Вашем случае, обратитесь к оригинальной документации: "arv-libc Manual" (в моём случае: Пуск --> Все программы --> WinAVR --> avr libc Manual [WinAVR]). В разделе "User Manual" есть глава "Inline Assembler Cookbook" - она посвящена ассемблерным вставкам.

Касательно "подводных камней", которые упоминал nest: безусловно, при применении ассемблерных вставок следует быть предельно осторожным, и убеждаться в правильности конечного сгенерированного кода ассемблера. Так же следует ознакомиться с описанием функций всех используемых библиотек. В программе с обработкой прерывания (по ссылке nest), можно использовать вариант объявления прерывания, в котором компилятор оставит весь код программисту, не положив в стек регистры и даже не поставив команду reti в конце прерывания.
34. mogikanin - 15 Февраля, 2011 - 05:22:34 - перейти к сообщению
cjA пишет:
asm и _asm- зависит от компилятора и вызывает зависимость от компилятора

Это так. Скорее всего, в WinAVR применяется asm.
cjA пишет:
пишите свои процедуры на классическом асме, делайте заголовочный файл и подсовывайте в Си на уровне сборщика.

Пожалуй это наиболее оптимальный вариант.
Белый Волк пишет:
В разделе "User Manual" есть глава "Inline Assembler Cookbook" - она посвящена ассемблерным вставкам.

Существенная конкретная подсказка, спасибо!