[an error occurred while processing this directive]
|
Здравствуйте, nyavro, сколько лет, сколько зим!
Теперь наведем последний марафет...
1) В цикле поставьте инструкцию RPTB вместо BANZ, это должно сократить длительность цикла.
2) У Вас должно быть порядка 30*128=3840 циклов, а у Вас в три раза больше. Может быть несколько причин.
- Подобное может произойти, если скажем, Ваши коэффициенты и входные данные не в DARAM-памяти, а в SARAM. Проверьте.
- Инструкция STL A,#-14,*AR2 занимает два слова и выполняется за два цикла. (Ее насколько помню можно писать без #: STL A,-14,*AR2). Занесите в регистр ASM число -14 и используйте команду STL A,ASM,*AR2
Должно помочь. Или же сдвигайте на два бита влево и сохраняйте АН, что лучше, не надо заморачиваться на ASM.
- Композер не так считает(:-(
3) Не хотите использовать SQDST, не надо, хотите использовать временный буфер для частных сумм, шут с Вами, используйте. Но в общем, Вы достигли предела в оптимизации данной подпрограммы. Должно быть, еще раз подчеркну, порядка 4000 циклов на всю подпрограмму.
Что думаете? Пишите мне на имейл, я думаю, мы уж тут всех замучили своими пространными письмами. Хотя, с другой стороны, это как-никак какая-то школа для всех заинтересованных программистов. Жалко, что на форуме мало публикуется фрагментов, которые позволяли бы накопить определенные приемы и трюки для разных процессоров. Я вот было попробовал, но поддержки не встретил. Как-то никто не понимает что ли, что от этого все станут чуточку опытнее, чего жмутся...
E-mail: info@telesys.ru