[an error occurred while processing this directive]
Пояснение
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Oldring 18 августа 2002 г. 10:50
В ответ на: Поясните пожалуста Вашу мысль, а то я что-то отупел в последнее время(+) отправлено AlexD 17 августа 2002 г. 19:29

"Напрягать попу" - потому что программист, отталкиваясь от своих представлений о том, как должен выглядеть ассемблерный код, вместо того, чтобы написать прямо на ассемблере, пытается подобрать "правильную" С конструкцию, компилируемую конкретным компилятором оптимально. Разумеется, на ассемблере нужно написать всю критичную по времени функцию, а не заниматься оптимизацией одного оператора.

Если же придавать подобным трюкам статус методологии, называя все это "правильным" программированием на С, результат может получиться убийственным для проекта. Это сейчас легко рассуждать, что все очевидно, когда известно, что этот код должен делать. Но если подобная конструкция встретится в программе человеку, ни разу с ней не имевшему дела, да еще и без комментариев - можно предсказать наверняка, какими словами этот бедолага будет вспоминать автора кода. И сам автор кода через пару лет работы с другими компиляторами забудет много мелких деталей подобного стиля программирования. А если вся программа будет написана в стиле "C for Keil", в ней черт ногу сломит.

Такая практика - это исследование особенностей работы конкретного компилятора. Попытка перенести подобный код на другой процессор или даже просто на компилятор другого производителя может превратиться в ад. Такие конструкции даже менее переносимы, чем ассемблер - в случае ассемблера для одного процессора хоть переносимы команды процессора, так что ассемблерный код можно переносить в другую систему для того же процессора применяя чисто формальные правки кода. К тому же, производитель компилятор вряд-ли тестирует, что будущие версии компилятора будут продолжать компилировать этот код оптимально.

Согласен, исследование особенностей компиляции выражений С конкретным компилятором - это занятие очень увлекательное и познавательное. По поводу же Б3-34 я не совсем правильно выразился, там исследовались не глюки, а именно особенности работы в непредусмотренных разработчиках режимах - оставалась открытой возможность получить числа с тремя знаками порядка вместо двух, и при работе с числами с нестандартными порядками калькулятор начинал вести себя очень странно. Так что исследование частных особенностей компилятора очень сильно напомнило мне копание в Б3-34 - занятие такое же увлекательное (все-таки, наверное, менее увлекательное :) и такое же практически бесполезное.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru