в качестве еще одной толики флуда позволю провести такое сравнение:
Си это русский язык
ассемблер - английский.
компилятор - автоматический переводчик
задача, донести до камня, который говорит только ТОЛЬКО по английски (на ассме) наиболее точно то, что ты от него хочешь.
можно написать на русском (Си), скормить текст переводчику (компилятору), который переведет его на английский (ассемблер) и потом отдать камню его почитать. он конечно все поймет (начнет выполнять) но так ли как мы хотели? потом вдруг выясняется что одно русское выражение он перевел не множко другой фразой, тоже правильно но не так как мы хотели. и в результате мы получили почти невылавливаемый глюк.
помоему лучше заставить себя выучить английский (ассемблер) который на самом деле гораздо проще любого другого языка, просто на нем запись длиннее и это пугает новичков, и разговаривать с процессором на его родном языке. согласны?
в конце концов на ассемблере можно програмить на бумажке! переводя в машинные коды по таблице инструкций, и будет вполне нормально. я так писал подпрограмму для работы с видеопамятью для спектрума (помните те времена?) убогий бейсик не позвалял нормально работать с памятью а компиляторов ассма есесно небыло. было "компилирование на бумаге".
собственно говоря для ассемблера и не правильно применять слово компилирование, тут более уместно "замена и переменных меток на реальные адреса", не более того
[Ответ]
dr.ON 09:55 03.02.2007
Насчет скорострельности( смотреть последний столбец). Если честно не сильно похоже на "один выстрел - один труп"
А теперь если дружно почитаем доки на х86, крутые DSP и тд. с внешней памятью и FLASHем, то ужаснемся их:
1) задержками на заполнение конвеера( кстати у AVRа уже проявляется)
2) задержками на переключение страниц памяти
3) на разницу во времени доступа к внешней и внутренней памяти
4) на задержки регенерации динамического ОЗУ
5) на одновременное выполнение нескольких инструкций
....
Вопрос! ЗАЧЕМ ВООБЩЕ ТОГДА ИЗОБРЕЛИ ТАЙМЕРЫ?
( вариант ответа:"чтоб крутые спецы делали с их помощью очередной частотомер" )
Сообщение от Leo:
работодатель предпочтёт человека, который даст наибольшую экономию на "железе" при серийном производстве. Куда в таком случае пойдёт "прыщавый студент", думаю, и так понятно.
Так кого он предпочтет если уже сейчас их цены равны, да еще и "прыщавый студент" особо пальцы гнуть не будет насчет оплаты труда!
Действительно сложный вопрос, ууу просто караул.
Сообщение от Leo:
Короче, давай так, даю тебе задачку, с которой физически по вычислительной мощи может справиться один кристалл, но физически на одном кристалле невыполнимую (не из-за того, что портов не хватит ). Если уместишь всё в одном камне, тебе приз... ну, скажем, баксов 200.
Пардон мъсье, но как ее можно сделать если ног нехватает?
А пару регистров поставить можно( сдвиговых или параллельных)?
P.S. Очень интересно( в "войну" вступают финансы).
Сообщение от Дерусов Николай:
использование прерывания (как ты предлагаешь) означает останов синтезации частоты, что приведет к взрыву силовой части стоимостью под 300$!!
Оооо, а вот это должнобыть красиво. А меня пустите посмотреть на это?
Сообщение от SVN:
Человек помощи попросил, а вы пиписками меряться начали...
Нормально. В теме разрешено флудить. Да и хоть както форум оживляем, а то последнее время полное загнивание данной ветки было.
P.S. Оооо, войнушка всетаки началась, правда немного вдругом русле, но ничего и так сойдет.
Изображения
Во веселуха началась!
Конкрктный пример возможного применения Сей:
Пульт управления каким-нибудь девайсом с графическим ЖКИ что-то типа MT–12864J (МЭЛТовский индикатор 128х64 точки) с обшиным меню, не хуже мобилы. Девайс управляется по RS-485, т.е скорость работы пульта - величина не критичная. Помимо всего прочего, предполагаемая цена девайса с пультомом около 300-400тыс руб., предполагаемая партия - 500 - 1000 шт. Время на разработку - чуть меньше года. Кто-нибудь решится писать прошивку пульта на ассемблере, при этом съэкономив 100 рублей, выбрав контроллер чуть по проще?
Сообщение от dr.ON:
Вопрос! ЗАЧЕМ ВООБЩЕ ТОГДА ИЗОБРЕЛИ ТАЙМЕРЫ?
Мда уж... Ты этого, видимо, так и не понял...
Сообщение от dr.ON:
Так кого он предпочтет если уже сейчас их цены равны, да еще и "прыщавый студент" особо пальцы гнуть не будет насчет оплаты труда!
Действительно сложный вопрос, ууу просто караул.
До сих пор отдают предпочтение профессионалам, потому что они впихивают ту же программу во вдвое более медленный (и настолько же дешёвый) камень, а работает программа быстрее и безглючнее.
Поверь, заказчику куда проще заплатить в 10 раз больше за разработку, чем потом переделывать изделия с конвейера.
Сообщение от dr.ON:
Пардон мъсье, но как ее можно сделать если ног нехватает?
А пару регистров поставить можно( сдвиговых или параллельных)?
P.S. Очень интересно( в "войну" вступают финансы).
Как раз оговорил отдельным пунктом - ног хватает!!! Причём этих ног свободных - хоть попой кушай.
Сообщение от dr.ON:
Оооо, а вот это должнобыть красиво. А меня пустите посмотреть на это?
Зря смеёшься. Ситуация более чем реальная. А чтобы посмотреть - пиши Николаю, готовь $300 и вперёд. Думаю, для тебя он продемонстрирует.
Сообщение от dr.ON:
Нормально. В теме разрешено флудить.
Извините, но на фоне беседы у вас явно наблюдаются "половые отклонения". [Ответ]
dr.ON 11:09 03.02.2007
Сообщение от Дерусов Николай:
согласен полностью. лично по аське челу помогал вылавливать глюк Си, из-за которого он мучался неделю:
писалась прога, которая по мимо всего прочего делала PORTB=0x10. причем выполняла она это за три такта как позже выяснилось по средством просматривания дизассембированного результата работы этого сраного Си.
а скомпиливалась перед прошивкой прога эта на другом компиляторе, что там с ним было не так я незнаю, но выполнял он те же PORTB=0x10 за два такта!
к чему это привело? к тому что не работал LCD экран, которому как раз одного такта задержки и нехватало после инициализации и перед подачей на его порт 0x10.
бились в кровь, пока плюнув на все я не почитал дизассемблерку результатов работы компилера и вручную не посчитал задержки.
(этот глюк был в драйвере инициализации и управления двухстрочным ЛСД экранчиком)
Сразу вопрос: КТОНИБУДЬ ВИДЕЛ СПЕЦИФИКАЦИЮ НА С, ГДЕ УКАЗАННО ЧТО "PORTB=0x10" выполняется за ХХ тактов?
Я, например, невидел и поэтому задержки в одну микросекунду делать бы так несоветовал. Если очень надо, то есть ассемблерные вставки.
А так как индикатор тварь асинхронная и медленная, то воттакбы сразу заработало:
......
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
PORTB=0x10;
P.S. Компилятор С в данной ситуации совершенно непричем. САМИ ТАКИЕ....
Сообщение от Дерусов Николай:
в качестве еще одной толики флуда позволю провести такое сравнение:
Си это русский язык
ассемблер - английский.
компилятор - автоматический переводчик
задача, донести до камня, который говорит только ТОЛЬКО по английски (на ассме) наиболее точно то, что ты от него хочешь.
можно написать на русском (Си), скормить текст переводчику (компилятору), который переведет его на английский (ассемблер) и потом отдать камню его почитать. он конечно все поймет (начнет выполнять) но так ли как мы хотели? потом вдруг выясняется что одно русское выражение он перевел не множко другой фразой, тоже правильно но не так как мы хотели. и в результате мы получили почти невылавливаемый глюк.
Такое конечно возможно, но некоторые "переводчики" имеют уже немолодой возраст( следовательно и большой опыт) и поэтому вероятность ошибки стремиться к нулю
Кстати, насчет $300 баксовой силовой части. Я б например микросекундные импульсы управления МК не генерировал бы вообще, а использовал бы ПЛИС или спец. микросхемы!
Т.к. МК вещь глюкавая + возможность зависания( а вачдог не спасет при таких задержках) и т.д.
[Ответ]
XPEH_BAM 11:09 03.02.2007
dr.ON, а вы не пробовали написать одну и ту программу на C+-*/ и на ассемблере, а потом посмотреть на размер получившегося бинарника?
У меня разница достигала 50%. Leo, задачку в студию. Аж прям интересно стало. Варианты "входов-выходов не хватит", "быстродействия не хватит" и "памяти не хватит" не предлагать.
[Ответ]
Leo 11:11 03.02.2007
SVN, Во-первых - очень непонятное техзадание (ни элементной, ни описания работы устройства). Во-вторых не оговорена оплата за разработку.
[Ответ]
Leo 11:15 03.02.2007
Сообщение от dr.ON:
А так как индикатор тварь асинхронная и медленная, то воттакбы сразу заработало:
Ну не заработало бы так. Кроме тупого расставления задержек ещё и такты на выполнение должны учитываться, иначе в итоге получим постоянное смещение одного относительно другого и белиберду на выходе.
Сообщение от dr.ON:
Такое конечно возможно, но некоторые "переводчики" имеют уже немолодой возраст( следовательно и большой опыт) и поэтому вероятность ошибки стремиться к нулю
Понятно... в переводами с иностранных языков вам тоже сталкиваться не приходилось...
[Ответ]
dr.ON 11:17 03.02.2007
Сообщение от Leo:
Короче, давай так, даю тебе задачку, с которой физически по вычислительной мощи может справиться один кристалл, но физически на одном кристалле невыполнимую (не из-за того, что портов не хватит ). Если уместишь всё в одном камне, тебе приз... ну, скажем, баксов 200.
Очень интересно. Денюшки пригодятся.
Сообщение от XPEH_BAM:
dr.ON, а вы не пробовали написать одну и ту программу на C+-*/ и на ассемблере, а потом посмотреть на размер получившегося бинарника?
У меня разница достигала 50%.
Невсегда, все зависит от алгоритмической оптимизации и настроек компилятора
А тем более в наше время FLASH экономить - это изврашение!
[Ответ]
Handle 11:31 03.02.2007
Уважаемые коллеги, человек просил совета. а вы устроили войну C vs asm. Нужно просто обратиться к мировому опыту. Если говорить о микроконтроллерах, то примерно 10% кода пишется на asm остальное на C. Если говорить о DSP то там примерно пополам, но там и задачи другие -сложная обработка сигналов например.
Теперь о скорости выполнения. asm код в среднем на 50% быстрее, но отладка в 5 раз сложнее. Сейчас вообще главное скорость и стоимость разработки. Есть такие цифры - на $1 разработки на C приходится $2 разработки на asm.
Очень странно слышать, что отладка С кода сложнее asm. Видимо просто у программиста недостаточная квалификация. Отладить большой проект на asm просто нереально, не говоря уже о том чтобы разобраться с чужим кодом. С позволяет разделить задачу на части и раздать их разным программистам, а потом готовые модули собрать вместе. Кстати популярные сейчас RISC оптимальны для C компиляторов. Еще надо впомнить о переносимости C кода на другую платформу c минимальными переделками.
Но все равно начинать нужно с изучения выбранной архитектуры и asm. Это поможет и при C программировании. И не нужно забывать, что C это язык не высокого уровня, говорят что это язык среднего уровня и компиляторы делают достаточно оптимальный код. Так что для МК это оптимальный выбор.
Здесь много говорили о AVR, но есть еще MSP430. По моему мнению из МК лучше ничего нет. 16 разрядный RISC с обширной переферией (8-к АЦП, 2к ЦАП, ШИМ), есть даже аппаратный умножитель и DMA, что вообще характерно для DSP. И вместе с тем ядро потребляет 500 uA при 1 MHz. Всем рекомендую.
[Ответ]
XPEH_BAM 11:40 03.02.2007
Handle, по поводу 10% кода - это да, особенно если в килобайтах исходников считать. В АСМе его гораздо меньше получается :-D
На моей практике на ЯВУ пишутся части программы высокого уровня, а процедуры-функции(часто тоже со своими процедурами и функциями) на ассемблере. Хотя иногда и всё на АСМ. Просто "левому" человеку (тому кто будет эксплуатировать) надо разбирать этот самый верхний уровень - не пугать же его ассемблером.
А чего эт вы тут на прерывания взъелись? Ну если процессор неполноценный, без приоритетов - эт понятно, но есть же нормальные.
[Ответ]
Leo 11:41 03.02.2007
Сообщение от XPEH_BAM:
Leo, задачку в студию. Аж прям интересно стало. Варианты "входов-выходов не хватит", "быстродействия не хватит" и "памяти не хватит" не предлагать.
Как раз в том-то и дело, что вроде бы как всего хватает.
Простейшее условие. Например, имеем устройство, которое содержит несколько внешних датчиков. При этом показания каждого датчика необходимо обрабатывать в режиме реального времени при помощи некоей программы (само по себе срабатывание датчика хоть и является событием, но надо ещё и обработать данные, которые с датчика поступили). Каждый из датчиков (а их четыре, например) может сработать в любой момент. Журнал срабатываний должен вестись в реальном времени с точностью до наносекунды.
Причём на обработку данных времени будет затрачено однозначно больше, чем возможный промежуток между срабатываниями датчиков.
Кроме того должна вестись таблица срабатываний датчиков, которая параллельно передаётся на компьютер. либо записывается на Flash и передаётся на компьютер. Вся система должна уметь работать без компьютера, расстояния между датчиками, до нескольких десятков метров. Сигнал с датчика в формате: "флаг срабатывания и строка состояния". Можно и иначе, но система должна работать без сбоев в режиме реального времени.
Вычислительные операции простейшие (справится даже слабый кристалл). Но вся засада кроется в том, что события должны быть обработаны в режиме реального времени.
[Ответ]
dr.ON 11:45 03.02.2007
Вот это классно человек все подытожил. Handle, Спасибо.
Насчет MSP430. Был у меня с ними опыт работы.
Минусы:
1) Очень нежные кристаллы( коротнул или еще чего, сразу труп)
2) Очень слабые выходы, надо буфферизировать( неудобно)
3) достаточно муторная процедура инициализации( запуск DCO или как там его правильно)
P.S.Handle, вы случайно не из НИИСа( там имеются поклонники этого семейства).
[Ответ]
XPEH_BAM 11:47 03.02.2007
Сообщение от Leo:
Журнал срабатываний должен вестись в реальном времени с точностью до наносекунды
Вот тут то оно и не будет работать.
Хотя у меня вариант с чуть большим количеством сигналов(56 на данный момент, потом может ещё повесят) работает. Требование - 100мс, работает в цикле ДО 1 мс. Первый цикл контроллера - 2 мс(инициализация, параметризация, проверка связи и т.п.)
Прикол в том, что контроллер - SIEMENS S7-400, специально предназначенный для таких задач.
[Ответ]
Leo 12:02 03.02.2007
Сообщение от XPEH_BAM:
А чего эт вы тут на прерывания взъелись? Ну если процессор неполноценный, без приоритетов - эт понятно, но есть же нормальные.
Просто прерывания далеко не для всех задач годятся, потому и взъелись.
Сообщение от XPEH_BAM:
Вот тут то оно и не будет работать.
Вернее сказать работать будет, но не на одном кристалле. [Ответ]
dr.ON 12:05 03.02.2007
Сообщение от Leo:
Журнал срабатываний должен вестись в реальном времени с точностью до наносекунды.
Помоему слишком громкие слова.
А вы задержку распостранения сигнала по проводу учитываете
А индуктивность и емкость кабеля [Ответ]
Leo 12:29 03.02.2007
Сообщение от Handle:
Если говорить о микроконтроллерах, то примерно 10% кода пишется на asm остальное на C.
Согласен, но большинство из таких "писателей" на Си просто не знают ассемблер. И это тоже факт.
Сообщение от Handle:
Очень странно слышать, что отладка С кода сложнее asm
Как правило сложнее не отладка кода (тут с Вами согласен), а именно дебаггинг (отлов глюков).
Сообщение от Handle:
Отладить большой проект на asm просто нереально,
А вот тут не согласен полностью. При правильно построенной блок-схеме отладка программы на asm сводится к простой проверке работы отдельно взятых модулей, что никоим образом не сложнее, чем та том же самом Си, просто займёт несколько больше времени из-за более объёмного текста.
Сообщение от Handle:
С позволяет разделить задачу на части и раздать их разным программистам, а потом готовые модули собрать вместе.
А чем в данном случае отличается asm??? Что мешает разбить задачу на модули при написании проекта на ассемблере? Неграмотный руководитель проекта?
ЗЫ: Ну и последний гвоздь в крышку гроба "писальщиков на Си"... Абсолютно все имеющиеся внутрисхемные отладчики работают именно с asm кодом.
[Ответ]
Leo 12:35 03.02.2007
Сообщение от dr.ON:
Помоему слишком громкие слова.
А вы задержку распостранения сигнала по проводу учитываете
А индуктивность и емкость кабеля
А вот это, мой дорогой, задачка как раз для тебя. У меня подобное устройство функционирует нормально. Или не ты себя бил пяткой в грудь, какой ты крутой программист, и всё с одного маха на одном кристалле раз плюнуть?
ЗЫ: Для "забывших" изучить физику в школе - скорость распространения электромагнитной волны по проводнику равна скорости света (300000 км/с).
ЗЗЫ: Для того, чтобы индуктивность и ёмкость кабеля не играли никакой роли, существуют очень простые и эффективные средства. [Ответ]
Дерусов Николай 12:41 03.02.2007
Сообщение от :
Оооо, а вот это должнобыть красиво. А меня пустите посмотреть на это?
да легко. приглашу на испытания очередной теслы двухрезонансной, у неё как раз останов синтеза частоты или изменение формы сигнала буквально на 10% с огромной вероятностью приведет к выносу моста питающего (а он на дорогущих игбтшках)
вот кстати наши фотки. Занимаемся изысканиями в области сверхвысоких напряжений. хобби такое http://flyback.org.ru/images/review.jpg
ну а тут можешь вообще все почитать, тут начиная от простейших схем, до самых хитрозамудреных http://flyback.org.ru/
если хочешь посмотреть на взрывы схем от кривого сигнала - скажу какие детали купить, приноси, подадим кривой сигнал и посмотрим на разлетающие куски корпусов игбтшек [Ответ]
dr.ON 12:46 03.02.2007
Сообщение от Leo:
Для "забывших" изучить физику в школе - скорость распространения электромагнитной волны по проводнику равна скорости света (300000 км/с).
делим на 1.000.000.000
получаем 30 см в наносекунду( вроде неошибся!?)
а в т.з. вроде чтото про 20 метров говорилось!
И еще к великому ГУРУ вопросец можно.
А какой тип МК исползуете? Тактовая по прикидкам должна не менее 10 ГГц( 10.000 MIPSов линейно)
dr.ON, повторяю ещё раз - задача решаемая без проблем!!! Если не можешь сделать на одном кристалле, то так сразу и говори!!!
И, интересно, откуда взялась цифра 10ГГц???
[Ответ]
SVN 13:28 03.02.2007
Сообщение от Leo:
SVN, Во-первых - очень непонятное техзадание (ни элементной, ни описания работы устройства). Во-вторых не оговорена оплата за разработку.
Во-первых - ни кому тз давать и не собирался, поскольку это уже год как реализовано и прекрасно работает.
Элементная база, к счастью - на усмотрение разработчика, за исключением вышеупомянутого индикатора.
Пульт приходится вести самому от начертания схемы электрической принципиальной , трассировки платы, работы с тупорылыми конструкторами, которые должны начертить корпус под пульт, отслеживания всего этого дела в производстве, дабы не потерялось, монтажа платы, написания прошивки, испытания в климате, на тряске, проведения полевых испытаний а так же написания кучи никому не нужных руководств по технической эксплуатации, паспортов и протоколов испытаний с соблюдением всех ГОСТов.
Помимо всего прочего, существуют и другие заказы.
Во-вторых оплата за разработку обратнопропорцианальна времени разработки :-) Естественно за всякие глюки в прграмме, нарушение сроков проектирования - штрафные санкции.
От сюда вопрос: останется ли времени выписывать всяческие там NOP-ы ?
Дабы не кривить душой, скажу, что ассемблерные вставки использовались активно...
[Ответ]
Дерусов Николай 13:38 03.02.2007
ой. обожаю holy wars!
Сообщение от :
Естественно за всякие глюки в прграмме, нарушение сроков проектирования - штрафные санкции.
ыыы) а Си защитит от глюков и багов? может от некоторых, но создаст другие все же прошивки на камни практически всегда маленького размера, тебе же не предлагают писать с нуля на ассме ядро висты (шоб она сдохла ). всего лишь несколько клиобайт максимально оптимизированного кода, а отладить хорошо написаную ассемблерную прогу размером в десяток килобайт не займет много времени;
ладно. я сваливаю из обсуждения. "святые войны" никогда не приносят результатов, всеравно оппоненты остануться на своих местах
[Ответ]
dr.ON 15:00 03.02.2007
Даа, запал пропал. Это все от того что мы слишком резко и слишком рьяно начали. Быстро все высказались( что накипело) и выдохлись.
Да еще и злобный дядька Handle, вмешался и подытожил все!
[Ответ]
Handle 15:21 03.02.2007
Уважаемый dr.ON возможно вы правы насчет msp430. Но если придерживаться спецификации то проблем не будет, все равно достоинств у него больше и для наших задач он подходит идеально.
Сообщение от Leo:
Как правило сложнее не отладка кода (тут с Вами согласен), а именно дебаггинг (отлов глюков).
Хотелось сообщить господину Leo, что отладка и дебаггинг это одно и тоже.
Сообщение от Leo:
А чем в данном случае отличается asm??? Что мешает разбить задачу на модули при написании проекта на ассемблере? Неграмотный руководитель проекта?
Уважаемый Leo, ни один грамотный руководитель проекта такого сложного, который потребовалось разбивать на модули да еще раздавать разным исполнителям не рискнет делать его на asm, ибо это верное самоубийство.
И вообще такое ощущение, что мы говорим о разных вещах. Если вы любитель, то можете себе позволить писать ассемблерный шедевр целый год и работать он будет наверное замечательно и вы получите кайф от всего этого. Однако, если вы профессионал и перед вами ставят конкретные задачи и конкретные сроки, то не остается времени на творческое самоудовлетворение. Надо выбирать инструменты, которые позволят решить задачу наиболее эфффективно.
[Ответ]
Дерусов Николай 15:41 03.02.2007
Сообщение от :
И вообще такое ощущение, что мы говорим о разных вещах. Если вы любитель, то можете себе позволить писать ассемблерный шедевр целый год и работать он будет наверное замечательно и вы получите кайф от всего этого. Однако, если вы профессионал и перед вами ставят конкретные задачи и конкретные сроки, то не остается времени на творческое самоудовлетворение. Надо выбирать инструменты, которые позволят решить задачу наиболее эфффективно.
а будет ли работать? получится ли решить на высокоуровневом Си то, что требуется? (только по честному, без ассмовых вставок)
в корне несогласен что ассм сложный, он очень прост и понятен, если его знать.
а что сроки? на разработку любого проекта отводится ну хотяб месяц/два. "халтурка за неделю" приводит к жутким убожествам. а за месяц/два если не отлынивать от работы можно шедевр создать.
Сообщение от :
Надо выбирать инструменты, которые позволят решить задачу наиболее эфффективно.
вот именно. только эффективность и время обычно противоположны. либо быстро и плохо, либо долго и хорошо, если заказчику нужно быстро и глюки - вперед.
еще раз замечу, что при таких объемах кода, что пишутся для подавляющего числа контроллеров (от силы два десятка килобайт) на ассме можно за разумное время создать именно то что хотел заказчик
[Ответ]
XPEH_BAM 15:45 03.02.2007
Сообщение от Leo:
А вот это, мой дорогой, задачка как раз для тебя. У меня подобное устройство функционирует нормально. Или не ты себя бил пяткой в грудь, какой ты крутой программист, и всё с одного маха на одном кристалле раз плюнуть?
ЗЫ: Для "забывших" изучить физику в школе - скорость распространения электромагнитной волны по проводнику равна скорости света (300000 км/с).
И разве это так? Скорости электромагнитной волны в вакууме и в среде разные.
И где же нужно такое быстродействие? Кроме того, нужно развязать цепи датчиков от цепей контроллера. Да задержки из-за ёмкости тут тоже важны, как сказано выше.
[Ответ]
zic 16:04 03.02.2007
Handle прав.
Полностью на ассемблере пишут любители. Профессионалы как правило используют ассемблер, но пишут на Си
[Ответ]
Handle 16:32 03.02.2007
Николай, не спорю что asm прост и понятен. Никакой проблемы выучить его нет. Более того его необходимо знать. Многие задачи asm позволяет решить боле гибко.
Проблема asm - обилие нюансов. Дело в том,что люди склонны делать ошибки - это факт и чем больше нюансов тем больше ошибок. С позволяет абстрагироваться от многих нюансов asm и тем самым избавляет нас от многих проблем. Простой пример - очистка стека. В какой то процедуре вы забыли очистить стек. С первого взгляда это не видно и может даже быть не замечено во время тестирования. Но в процессе работы неизбежно приведет к переполнению стека и затиранию данных. А если у вас десятки процедур да еще с вложенными вызовами друг друга, да еще есть обработчики прерываний, что вас ждет во время отладки?
А что насчет размера программ. В первом MК51 было всего 4k ПЗУ сейчас уже у многих МК 100k FLASH и более, все развивается и многие МК уже приобретают черты DSP соответственно и задачи усложняются поэтому если хочешь развиваться просто необходимо знать С. Кстати любое профессиональное средство разработки для любого семейства обязательно содержит компилятор С, набор библиотек и отладчик С кода.
[Ответ]
Van der Bot 13:11 04.02.2007
Кстати, Си Сям рознь. Так, например, в Code Composer для TMS можно писать с использованием CSL (chip support library), а можно и без оной. И то, и другое зовётся Си, но очень уж разное... Без CSL особых преимуществ перед ассемблером мы не получим, но с CSL программирование не похоже на программирование. Посему я за asm.
[Ответ]