Re[5]: (i % 10) для AVR
От: ДимДимыч Украина http://klug.org.ua
Дата: 05.02.08 19:19
Оценка:
Здравствуйте, pullover, Вы писали:

P>
P>split_digit:
P>    clr r17
P>split_digit_loop:
P>    cpi r16, 10
P>    brlo split_digit_done
P>    subi r16, 10
P>    inc r17
P>    rjmp split_digit_loop
P>split_digit_done:
P>    ret
P>


Для определенных задач данный метод пойдет, но он имеет существенный недостаток: время вполнения линейно зависит от значения аргумента, где-то 6*N/10, т.е. уже для числа 100 это будет около 60 тактов. Ну если исключить подсчет частного, то 5*N/10.
Вообще в таких ситуациях необходимо рассматривать задачу более глобально: в чем (размер кода или скорость) требуется оптимизация и как будет использоваться результат. Если это например динамическая индикация на семисегментнике, то оптимальное решение может быть совсем другим.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.