|
Кто мешает программировать на АСМе в соответствии с идеями структурного программирования и даже ООП ?
Это и есть путь избежать ошибок.
Применительно к многорегистровым ядрам (типа АВР) бывает полезно описать сначала использование регистров разными частями программы, и строго придеживаться этого. Это может дать большую экономию (в разы) по сравнению с оптимизирующими компиляторами, потому что Вы изначально строите "карту использования регистров" в соответствии с Вашей текущей задачей, а компилятор лишь пытается распределить переменные в регистры/память по некоторым (универсальным) эмпирическим правилам, от Вашей задачи не зависящим. Также припрограммировании в АСМе допустимы трюки с параллельным использованием одного и того же регистра в разных частях программы, если из логики работы Вашей программы ясно, что это не вызовет коллизий. Компилятор таких вещей не видит.
Когда имеется 50 переменных и только 30 из них влезает в регистры, то выигрыш от неиспользования стека или памяти может быть весьма велик.
E-mail: info@telesys.ru