avr-tick, calculate how many cpu oscilator ticks is necessary for processing selected procedure. Input is dissassembled code (by avr-objdump -d). avr-tick.sh add at end of each line "tick" value for instruction. Value is inside square brakets.

Now only attiny core is supported. No jmp, call, mul instructions. Ijmp and icall is not calculated too.

Example tick calculation from avr-objdump output

start addres = 1148
<__vector_2>:
 47c:	78 94       	sei	;;[1]
 47e:	1f 92       	push	r1	;;[3]
 480:	0f 92       	push	r0	;;[5]
 482:	0f b6       	in	r0, 0x3f	; 63	;;[6]
 484:	0f 92       	push	r0	;;[8]
 486:	11 24       	eor	r1, r1	;;[9]
 488:	8f 93       	push	r24	;;[11]
 48a:	9f 93       	push	r25	;;[13]
 48c:	af 93       	push	r26	;;[15]
 48e:	bf 93       	push	r27	;;[17]
 490:	88 9a       	sbi	0x11, 0	; 17	;;[19]
BRANCH: 492
--------- true 492
 492:	57 fc       	sbrc	r5, 7	;;[21]
BRANCH: 496
--------- true 496
 496:	51 10       	cpse	r5, r1	;;[23]
BRANCH: 49a
--------- true 49a
 49a:	b4 9b       	sbis	0x16, 4	; 22	;;[25]
 49e:	84 e0       	ldi	r24, 0x04	; 4	;;[26]
 4a0:	78 2e       	mov	r7, r24	;;[27]
 4a2:	24 c0       	rjmp	.+72     	; 0x4ec <__vector_2+0x70>	;;[29]
 4ec:	82 ee       	ldi	r24, 0xE2	; 226	;;[30]
 4ee:	58 2e       	mov	r5, r24	;;[31]
 4f0:	19 c0       	rjmp	.+50     	; 0x524 <__vector_2+0xa8>	;;[33]
 524:	bf 91       	pop	r27	;;[35]
 526:	af 91       	pop	r26	;;[37]
 528:	9f 91       	pop	r25	;;[39]
 52a:	8f 91       	pop	r24	;;[41]
 52c:	0f 90       	pop	r0	;;[43]
 52e:	0f be       	out	0x3f, r0	; 63	;;[44]
 530:	0f 90       	pop	r0	;;[46]
 532:	1f 90       	pop	r1	;;[48]
 534:	18 95       	reti	;;[52]
.
.
.

This output is generated by running: avr-tick.sh example.objdump 47c (47c is start address of procedure)

Full output download