Цитата(defunct @ Jul 9 2007, 14:53)

Вы не правы.
Ну зачем же так категорично

Цитата
Т.к. на асм никто не обязывает вас делать пролог и эпилог к каждой функции одинаковым,
Странно, но у меня прологи и эпилоги у функций очень разные, а чаще всего их
нету вобще
Цитата
ключевые переменные можно держать в регистрах,
В С тоже можно.
в IAR кажется 4 регистра гарантированны, в WinAVR 6 (r2-r7)+ можно
использовать и дальше (r8-r15), но правда уже с осторожностью
Цитата
распределять память страницами - экономить на загрузке XH/YH/ZH,
Согласен, но большой выигрыш это может дать только на очень узком круге задач
Цитата
также по-человечески работать с битами (bst/bld) + полноценное использование флага C.
Вот здесь соглашусь полностью и безоговорочно, работа с отдельными битами в С
это тяжелый случай,
НО, как показывает моя практика, этот эфект можно очень сильно уменьшить если
при написании проги на С пользоваться известными особенностями конкретного компилятора,
при этом никто не мешает писать переносимый(возможно не всегда оптимальный для
разных платформ код)
Цитата
У меня программа на асм в среднем получается в 3-5 раз меньше по объему чем аналог на C. (алгоритмы одинаковые). Как пример - драйвер RTL8019 + UDP/IP стек + небольшой командный протокол over UDP и все это в в 1.7k (бутлоадер по сети). То же самое на Си компилится минимум в 8k.
Такой результат получить очень просто, не пользоваться компиляторозависимой оптимизацией,
но как-то странно ей не пользоваться когда мы сравниваем полученную
производительность/размер кода между С и ASM
А с Вашим подходом с использованием Mega168 на стадии отладки и использованием
mega48/88/168 соответственно на стадии производства, очень даже согласен.
Сам использовал даже такую комбинацию
ATmega16 - отладка
ATtiny2313 - готовое изделие

Единственно дефайнить много пришлось

но правда всего лишь один раз