termostat> Serge77 > Это просто, когда всё досконально знаешь, вплоть до организации маш.слова. А когда пишешь оператор, который вроде должен работать, а он не работает, хотя точно такой же рядом работает, то становится грустно.
termostat> Вот потому то и востребованы машинно не зависимые языки типа Си паскаль Бэсик. Чтоб не забивать голову всякой чепухой, а делать конкретную работу. [»]
Да все правильно
Только вот посмотришь в подстрочник ассемблеровский и волосы дыбом встают
Вот пример надо сделать счетчик оборотов/мин, ну проще чем на Си как бы и быть не может. Беру WinAVR, поскольку считаю его сильно продвинутым в оптимизации, и начинаю делать. Сделал - 1,5 Кб ;-E, волосы лезут на затылок.... Открываю lst, смотрю и замечаю очень много явных ляпов, начинаю их ликвидировать переношу глобальные переменные в регистры (может быть он и сам могет - но ключей таких что то не нашел)... Уже лучше 1Кб. Смотрю еще раз нахожу еще несуразности в частности в использовании регистров нижней половины, как могу переделываю, скажем вот такой фокус:
t = 0xFA;
При условии что t неопределен как регистровая переменная превращается в следующее:
eor r3,r3 ; использует r3 вместо t
subi r3, 6
Все хорошо согласен, с оптимизировал исключительно, но глупо
беру и завожу глобальную переменную t в регистре r16. Мне не жалко было бы конечно кода или памяти, так как чип ATMega 8515, но он это лепит в прерывание и еще другое лепит - такое что за голову берешься. Ну после всех моих выкрутасов получилось - 900 Кб. Если поизвращаться с startup-ом будет 800 Кб. Но это же охрененный оверхед, как бы раз не в 7-8. Ну жалко мне товарищи, жалко, причем видно же что просто еще не научились оптимизировать автоматом толком.