Code:
	ARCo.elf:     file format elf32-avr
Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000d9e  00800100  00005922  000059d6  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00005922  00000000  00000000  000000b4  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          000003b7  00800e9e  00800e9e  00006774  2**0
                  ALLOC
  3 .eeprom       000001ea  00810000  00810000  00006774  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  4 .debug_aranges 00000020  00000000  00000000  0000695e  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 000008ef  00000000  00000000  0000697e  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   00003355  00000000  00000000  0000726d  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 000003eb  00000000  00000000  0000a5c2  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   000045d7  00000000  00000000  0000a9ad  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  00000600  00000000  00000000  0000ef84  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000897  00000000  00000000  0000f584  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00001f04  00000000  00000000  0000fe1b  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_ranges 00000270  00000000  00000000  00011d1f  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
       0:    0c 94 46 00     jmp    0x8c    ; 0x8c <__ctors_end>
       4:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
       8:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
       c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      10:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      14:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      18:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      1c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      20:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      24:    0c 94 32 0b     jmp    0x1664    ; 0x1664 <__vector_9>
      28:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      2c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      30:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      34:    0c 94 ce 07     jmp    0xf9c    ; 0xf9c <__vector_13>
      38:    0c 94 b3 0a     jmp    0x1566    ; 0x1566 <__vector_14>
      3c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      40:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      44:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      48:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      4c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      50:    0c 94 a4 00     jmp    0x148    ; 0x148 <__vector_20>
      54:    0c 94 d3 00     jmp    0x1a6    ; 0x1a6 <__vector_21>
      58:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      5c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      60:    0c 94 14 0c     jmp    0x1828    ; 0x1828 <__vector_24>
      64:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      68:    0c 94 1d 02     jmp    0x43a    ; 0x43a <__vector_26>
      6c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      70:    0c 94 76 01     jmp    0x2ec    ; 0x2ec <__vector_28>
      74:    0c 94 a6 01     jmp    0x34c    ; 0x34c <__vector_29>
      78:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      7c:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      80:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      84:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
      88:    0c 94 65 00     jmp    0xca    ; 0xca <__bad_interrupt>
0000008c <__ctors_end>:
      8c:    11 24           eor    r1, r1
      8e:    1f be           out    0x3f, r1    ; 63
      90:    cf ef           ldi    r28, 0xFF    ; 255
      92:    d0 e4           ldi    r29, 0x40    ; 64
      94:    de bf           out    0x3e, r29    ; 62
      96:    cd bf           out    0x3d, r28    ; 61
00000098 <__do_copy_data>:
      98:    1e e0           ldi    r17, 0x0E    ; 14
      9a:    a0 e0           ldi    r26, 0x00    ; 0
      9c:    b1 e0           ldi    r27, 0x01    ; 1
      9e:    e2 e2           ldi    r30, 0x22    ; 34
      a0:    f9 e5           ldi    r31, 0x59    ; 89
      a2:    00 e0           ldi    r16, 0x00    ; 0
      a4:    0b bf           out    0x3b, r16    ; 59
      a6:    02 c0           rjmp    .+4          ; 0xac <__do_copy_data+0x14>
      a8:    07 90           elpm    r0, Z+
      aa:    0d 92           st    X+, r0
      ac:    ae 39           cpi    r26, 0x9E    ; 158
      ae:    b1 07           cpc    r27, r17
      b0:    d9 f7           brne    .-10         ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
      b2:    12 e1           ldi    r17, 0x12    ; 18
      b4:    ae e9           ldi    r26, 0x9E    ; 158
      b6:    be e0           ldi    r27, 0x0E    ; 14
      b8:    01 c0           rjmp    .+2          ; 0xbc <.do_clear_bss_start>
000000ba <.do_clear_bss_loop>:
      ba:    1d 92           st    X+, r1
000000bc <.do_clear_bss_start>:
      bc:    a5 35           cpi    r26, 0x55    ; 85
      be:    b1 07           cpc    r27, r17
      c0:    e1 f7           brne    .-8          ; 0xba <.do_clear_bss_loop>
      c2:    0e 94 06 2a     call    0x540c    ; 0x540c <main>
      c6:    0c 94 8f 2c     jmp    0x591e    ; 0x591e <_exit>
000000ca <__bad_interrupt>:
      ca:    0c 94 00 00     jmp    0    ; 0x0 <__vectors>
000000ce <init_uart0>:
                    // count up and wrap around
// ============================================================================== =
void init_uart0( u16 bauddivider )
{
  UBRR0H = bauddivider >> 8;
      ce:    90 93 c5 00     sts    0x00C5, r25
  UBRR0L = bauddivider;            // set baud rate
      d2:    80 93 c4 00     sts    0x00C4, r24
  UCSR0A = 0;                // no U2X, MPCM
      d6:    10 92 c0 00     sts    0x00C0, r1
  UCSR0C = 1<<UCSZ01^1<<UCSZ00        // 8 Bit
      da:    86 e0           ldi    r24, 0x06    ; 6
      dc:    80 93 c2 00     sts    0x00C2, r24
#ifdef URSEL0
       ^1<<URSEL0            // if UCSR0C shared with UBRR0H
#endif
       ;
  UCSR0B = 1<<RXEN0^1<<TXEN0^        // enable RX, TX
      e0:    88 e9           ldi    r24, 0x98    ; 152
      e2:    80 93 c1 00     sts    0x00C1, r24
       1<<RXCIE0;            // enable RX interrupt
  rx_in = rx_out;            // set buffer empty
      e6:    80 91 21 0f     lds    r24, 0x0F21
      ea:    80 93 20 0f     sts    0x0F20, r24
  tx_in = tx_out;
      ee:    80 91 a3 0f     lds    r24, 0x0FA3
      f2:    80 93 a2 0f     sts    0x0FA2, r24
}
      f6:    08 95           ret
000000f8 <ukbhit0>:
// ============================================================================== =
u8 ukbhit0( void )
{
  return rx_out ^ vu8(rx_in);        // rx_in modified by interrupt !
      f8:    90 91 21 0f     lds    r25, 0x0F21
      fc:    80 91 20 0f     lds    r24, 0x0F20
}
     100:    89 27           eor    r24, r25
     102:    08 95           ret
00000104 <ugetchar0>:
// ============================================================================== =
u8 ukbhit0( void )
{
  return rx_out ^ vu8(rx_in);        // rx_in modified by interrupt !
     104:    90 91 21 0f     lds    r25, 0x0F21
     108:    80 91 20 0f     lds    r24, 0x0F20
// ============================================================================== =
u8 ugetchar0( void )
{
  u8 data;
  while( !ukbhit0() );            // until at least one byte in
     10c:    98 17           cp    r25, r24
     10e:    d1 f3           breq    .-12         ; 0x104 <ugetchar0>
  data = rx_buff[rx_out];        // get byte
     110:    e0 91 21 0f     lds    r30, 0x0F21
     114:    f0 e0           ldi    r31, 0x00    ; 0
     116:    e0 56           subi    r30, 0x60    ; 96
     118:    f1 4f           sbci    r31, 0xF1    ; 241
     11a:    e0 81           ld    r30, Z
  ROLLOVER( rx_out, RX0_SIZE );
     11c:    80 91 21 0f     lds    r24, 0x0F21
     120:    8f 5f           subi    r24, 0xFF    ; 255
     122:    80 93 21 0f     sts    0x0F21, r24
     126:    80 91 21 0f     lds    r24, 0x0F21
     12a:    87 ff           sbrs    r24, 7
     12c:    02 c0           rjmp    .+4          ; 0x132 <ugetchar0+0x2e>
     12e:    80 e0           ldi    r24, 0x00    ; 0
     130:    02 c0           rjmp    .+4          ; 0x136 <ugetchar0+0x32>
     132:    80 91 21 0f     lds    r24, 0x0F21
     136:    80 93 21 0f     sts    0x0F21, r24
  URX0_IEN = 1;                // enable RX interrupt
     13a:    80 91 c1 00     lds    r24, 0x00C1
     13e:    80 68           ori    r24, 0x80    ; 128
     140:    80 93 c1 00     sts    0x00C1, r24
  return data;
}
     144:    8e 2f           mov    r24, r30
     146:    08 95           ret
00000148 <__vector_20>:
...
...
und so weiter
// ============================================================================== =
 Hier könnte man (wenn man viel Zeit hat - und Lust, oder wenn man es nötig findet) die Befehle jmp, ldi, out oder alle andern MAschinenbefehle im Datenblatt suchen und deren Anzahl von CPU-Takten notieren. Diese Taktanzahl für die jeweils interessierenden Abschnitte (Subroutinen, ISR etc) zusammenzählen und mit der Taktdauer multiplizieren . . .
Lesezeichen