Цитата(starter48 @ Mar 6 2008, 14:07)

Этот процессор задумывался для работы с компиляторами языков высого уровня.
Когда пишешь на Си, о таких мелочах и не задумываешься
На асме в наше время пишут только критичные участки кода.
Абсолютно верно!
Иногда все-таки нет-нет, да появляются люди, которым приходится объяснять с самого начала, от Адама и Евы. Ну что ж, терпите.
Ядро AVR уникальное. Разрабатывалось оно не в одиночку "железячниками", а в тесном контакте с программистами, которые пишут компиляторы. И не просто компиляторы, а Си-компиляторы. Это было сделано преднамеренно. ATMEL (и не только она одна) проанализировала стоимость конечного изделий, и пришла к выводу, что подавляюще большую долю при создании девайса занимает стоимость разработки программного обеспечениия. Итенденция эта год от года только увеличивается.
Если б АТМЕЛ заботилась только о своих проблемах, она бы родила что-то другое. Но АТМЕЛ играет в многоходовые игры, и она озаботилась уменьшением себестоимости изделий своих клиентов в целом. А поскольку наибольшая стоимость в разработке изделий падает на ПО, то было бы не плохо это как-то уменьшить. Как?
Еще один анализ, теперь уже касающийся разработки ПО. Программисты сейчас пишут ПО в основном на Си. Почему? -- Да, опять же исходя из экономических сооображений! Программа написанная на Си будет стоить дешевле, проги написанной на ассемблере. (Я сейчас не хочу вдваться в дискуссию по поводу отвязанных от типа ядра программистов Си-шников, и жестко привязанных к типу ядра программистов-ассеблеристов, и количества их на рынке труда.) Важно понять то, что если удастся сделять ядро такое, что при написании программ на Си будет генерироваться объем кода незначительно худший, чем при написании программ на ассемблере, то это будет весьма востребованное на рынке ядро. АТМЕЛу удалось сделать такое ядро.
Резюме будет следущее.
Господа-товарищи,
АВР -- уникальное ядро. Оно "заточено" под Си-шное программирование. А то обстоятельство, что для АВР можно писать на ассемблере, так это факультативно, хотите -- пишите!
Если "полистать" и-нет, то можно заметить, что для АВР программы в основном люди пишут на Си. Как сказал
starter48, только критические участки кода пишутся на асме. И такой подход выбран это не ради религиозных войн программистов, а ради снижения себестоимости изделия. Но жизнь -- богатая штука, и порой встречаются люди (кустари, волки-одиночки), которые неповязаны на экономический фактор, не озабочены вопросами прибыли и себестоимости. В основном это люди -- любители или студенты, т.е. люди не связанные с производством. Конечно, им сложно понять специфику АВР-ядра.
// Извините, если это было очень долго и нудно.
Что касается высказывания "
условные пропуски оказались какими-то странными", то опять-таки надо смотреть несколько глубже.
Вместо подробного описания здесь, я очень рекомендую прочитать серию статей И.Каршенбойма
http://www.compitech.ru/html.cgi/rubrikator/micros.htmХотя читать их несколько сложно... (мне, как минимум, несколько раз по ходу чтения приходила мысль задвинуть на них, но я упорно вгрызался в проблему. Сейчас я нисколько не жалею об этом. И более того, я даже рекомендую их к прочтению.)
Итак, хотя читать эту серию статей сложно, и специфика там не совсем наша, но автор четко расписываеет почему именно в таком направлении идет развитие ядер. Чем хороши файловые регистровы, почему сейчас использубтся два стека (отдельный стек для адресов возвратов и отдельный стек для аргументов функций), чем выгодны "
странные условные пропуски", почему Гарвардская архитектура работает быстрее Фон-Неймановской, и т.д.
Читайте, и не смотрите на то, что многое покажется вам не понятным. Со временем вы поймете.
Удачи!