Решил из любви к искусству написать сабж. Реализация примитивнейшего алгоритма внезапно оказалась мозговзрывательным занятием на целый день (параллельно с чтением толксов)
Протестил на atmega8515, вроде работает
insertion_sort: ; X - адрес буфера в RAM, r18 - размер буфера в байтах
adiw XH:XL,1
mov r19, r18; r19 - счётчик внешнего цикла
dec r19
_insertion_sort_loop:
breq _insertion_sort_end
movw YH:YL, XH:XL
subi YH:YL,1
ld r20,X+
mov r16, r18
sub r16, r19 ; r16 - счётчик внутреннего цикла
_insertion_sort_loop2:
breq _insertion_sort_loop2_end
ld r17, Y
cp r20, r17
brsh _insertion_sort_loop2_end
std Y+1, r17
subi YH:YL,1
dec r16
rjmp _insertion_sort_loop2
_insertion_sort_loop2_end:
std Y+1,r20
dec r19
rjmp _insertion_sort_loop
_insertion_sort_end:
ret
Кто тут есть из любителей AVR, какие улучшения ещё можно сделать в плане уменьшения количества инструкций, используемых регистров или просто чтоб красивее выглядело?