Здравствуйте, Уважаемый Leha!
Wed Mar 16 2005 10:35, Leha Bishletov wrote to Olga Nonova:
ON>> Если честно, то задача контроля типов, слава Богу!, никак не ON>> решается.
LB> Интересно, что хорошего в отсутствии контроля типов? Для меня одной из LB> существенных причин перехода ASM->C был именно контроль типов.
Хорошее в отсутствии всяческих ограничений использовать одну ту-же переменную или константу в самых разных типах и не бороться при этом с назойливыми сообщениями компилятора об ошибках.
ON>> "Компилированный стек" тоже не реализуется. Ибо от лукавого.
LB> А как же экономия байтов? Или нужно отказаться от совместного LB> использования одного и того же участка памяти разными подпрограммами?
Динамическое распределение локальных переменных может решаться и без привлечения стека данных (см. например PLM-51). Стек данным нужен только в случае рекурсивного использования процедур. Вы часто используете рекурсии в своих задачах?
ON>> MoveByte MACRO Byt1,Byt2 ON>> lds R16,Byt1 ON>> sts Byt2,R16 ON>> ENDM
LB> Я плохо разбираюсь в системе команд AVR, но мне кажется, что там есть LB> косвеная адресация, корорая "экономнее" lds-sts. Компилятор может для LB> MoveByte выбрать наиболее выгодную форму, в зависимости от того, что это LB> за Byt, а твоя программа будет всегда использовать lds-sts. Вот один из LB> моментов, когда результат на ASM проигрывает результату на С. Есть и LB> другие предпосылки для получения менее эффективного кода на ASM, т.к. LB> нужно сохранить читаемость программы, а оптимизатора нет ...
Если вспомнить, что для косвенной алресации нужно предварительно назначить все указатели, то должно сразу стать понятным, что для пересылки одного байта ее использовать совершенно неэкономично. И для двух, и для трех...Затраты по инструкциям выравниваются, где-то начиная с пересылки в 8 _последовательно_ расположенных байт. Таким образом...
LB> Без контроля типов и какой-нибудь оптимизации твои макросы просто LB> замена мнемоник одного ASM на другой, привычный.
Это далеко не так. Помощь в написании надежного кода- неимоверная. Поскольку защищает от рутинных ошибок в наборе кода, которые, увы, никакому асу программирования не избежать. Hадежность возрастает, поскольку все макросы выстраданы собственной шкурой и вычищены от багов.
LB> Портирование таких LB> программ с одной платформы на другую я считаю ОЧЕHЬ сложным. У тебя есть LB> опыт портирования твоего ASM с AVR на "не AVR"?
Такого опыта у меня нет. Да и зачем менять шило на мыло? Спектра моделей AVR хватит еще лет на 10 практической деятельности.
Всего Вам Хорошего Ольга