Ну да. sbiw заменяется на sub/sbc или subi/sbci, те же два такта. cp2i у меня занимают даже пять тактов, там push/pop потому что сравнение с константой и нужен "старший" регистр. Про счётчик против указателя: тут надо оценить, что лучше (быстрее/компактнее/безглючнее, кому что надо). Указатель привлекает автоинкрементом (Y+,Rr и -Y,r) Можно ещё ускорить этот код, если насильно (.org) разместить буферы внутри 256-байтной страницы и работать только с Yl, тогда вся арифметика будет делаться за 1 такт.
Ну и про пролог/эпилог. Я обычно выделяю 3-4 регистра (один старший) для прерываний. Их не надо сохранять, т.к. вложенных прерываний нет. Если их не хватает, тогда уже push и pop. Сильно прижмёт - добавлю к ним Y или Z.
Приведенный вами код только для одного случая. Если пакеты всегда одинаковы. А если они разные? Потому я и ввел счетчик байтов в пакете
Это я просто не понял. Код был приведён вами, а не мной, я его только подправил.
Чем мой указатель отличается от вашего счётчика? размером только; вы сравниваете счётчик, я сравниваю указатель, разницы в алгоритме никакой, а кому сколько не жалко байтов/тактов пусть каждый оценивает сам.