
a.out:     формат файла elf32-avr


Дизассемблирование раздела .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	19 c0       	rjmp	.+50     	; 0x36 <__bad_interrupt>
   4:	18 c0       	rjmp	.+48     	; 0x36 <__bad_interrupt>
   6:	17 c0       	rjmp	.+46     	; 0x36 <__bad_interrupt>
   8:	16 c0       	rjmp	.+44     	; 0x36 <__bad_interrupt>
   a:	15 c0       	rjmp	.+42     	; 0x36 <__bad_interrupt>
   c:	14 c0       	rjmp	.+40     	; 0x36 <__bad_interrupt>
   e:	13 c0       	rjmp	.+38     	; 0x36 <__bad_interrupt>
  10:	12 c0       	rjmp	.+36     	; 0x36 <__bad_interrupt>
  12:	11 c0       	rjmp	.+34     	; 0x36 <__bad_interrupt>
  14:	10 c0       	rjmp	.+32     	; 0x36 <__bad_interrupt>
  16:	0f c0       	rjmp	.+30     	; 0x36 <__bad_interrupt>
  18:	0e c0       	rjmp	.+28     	; 0x36 <__bad_interrupt>
  1a:	0d c0       	rjmp	.+26     	; 0x36 <__bad_interrupt>
  1c:	0c c0       	rjmp	.+24     	; 0x36 <__bad_interrupt>
  1e:	0b c0       	rjmp	.+22     	; 0x36 <__bad_interrupt>
  20:	0a c0       	rjmp	.+20     	; 0x36 <__bad_interrupt>
  22:	09 c0       	rjmp	.+18     	; 0x36 <__bad_interrupt>
  24:	08 c0       	rjmp	.+16     	; 0x36 <__bad_interrupt>

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf e5       	ldi	r28, 0x5F	; 95
  2c:	d4 e0       	ldi	r29, 0x04	; 4
  2e:	de bf       	out	0x3e, r29	; 62
  30:	cd bf       	out	0x3d, r28	; 61
  32:	6d d0       	rcall	.+218    	; 0x10e <main>
  34:	0c c1       	rjmp	.+536    	; 0x24e <_exit>

00000036 <__bad_interrupt>:
  36:	e4 cf       	rjmp	.-56     	; 0x0 <__vectors>

00000038 <utoa10>:
#include <avr/io.h>

#define B35 (1ULL<<35)

char * utoa10(uint32_t x, char *str){
  38:	df 92       	push	r13
  3a:	ef 92       	push	r14
  3c:	ff 92       	push	r15
  3e:	0f 93       	push	r16
  40:	1f 93       	push	r17
  42:	cf 93       	push	r28
  44:	df 93       	push	r29
  46:	c6 2f       	mov	r28, r22
  48:	e7 2f       	mov	r30, r23
  4a:	d4 2e       	mov	r13, r20
  4c:	d5 2f       	mov	r29, r21
  #define D ((B35 + 5) / 10)
  uint32_t i;
  char *s1, *s = str;
  4e:	e4 2e       	mov	r14, r20
  50:	f5 2e       	mov	r15, r21
  do {
    x = (i = x) * D >> 35;
  52:	6c 2f       	mov	r22, r28
  54:	7e 2f       	mov	r23, r30
  56:	2d ec       	ldi	r18, 0xCD	; 205
  58:	3c ec       	ldi	r19, 0xCC	; 204
  5a:	4c ec       	ldi	r20, 0xCC	; 204
  5c:	5c ec       	ldi	r21, 0xCC	; 204
  5e:	9e d0       	rcall	.+316    	; 0x19c <__umulsidi3>
  60:	03 e2       	ldi	r16, 0x23	; 35
  62:	c5 d0       	rcall	.+394    	; 0x1ee <__lshrdi3>
  64:	c9 01       	movw	r24, r18
  66:	89 01       	movw	r16, r18
  68:	9a 01       	movw	r18, r20
    *s++ = i - x * 10 + '0';
  6a:	b7 01       	movw	r22, r14
  6c:	6f 5f       	subi	r22, 0xFF	; 255
  6e:	7f 4f       	sbci	r23, 0xFF	; 255
  70:	c0 5d       	subi	r28, 0xD0	; 208
  72:	9a e0       	ldi	r25, 0x0A	; 10
  74:	89 9f       	mul	r24, r25
  76:	c0 19       	sub	r28, r0
  78:	11 24       	eor	r1, r1
  7a:	f7 01       	movw	r30, r14
  7c:	c0 83       	st	Z, r28
  7e:	c0 2f       	mov	r28, r16
  80:	e1 2f       	mov	r30, r17
  82:	84 2f       	mov	r24, r20
  84:	95 2f       	mov	r25, r21
  } while (x);
  86:	01 2b       	or	r16, r17
  88:	02 2b       	or	r16, r18
  8a:	03 2b       	or	r16, r19
  8c:	11 f0       	breq	.+4      	; 0x92 <__SREG__+0x53>
  #define D ((B35 + 5) / 10)
  uint32_t i;
  char *s1, *s = str;
  do {
    x = (i = x) * D >> 35;
    *s++ = i - x * 10 + '0';
  8e:	7b 01       	movw	r14, r22
  90:	e0 cf       	rjmp	.-64     	; 0x52 <__SREG__+0x13>
  } while (x);
  *(s1 = s) = 0;
  92:	f7 01       	movw	r30, r14
  94:	11 82       	std	Z+1, r1	; 0x01
  96:	ed 2d       	mov	r30, r13
  98:	fd 2f       	mov	r31, r29
  #define D ((B35 + 5) / 10)
  uint32_t i;
  char *s1, *s = str;
  do {
    x = (i = x) * D >> 35;
    *s++ = i - x * 10 + '0';
  9a:	db 01       	movw	r26, r22
  } while (x);
  *(s1 = s) = 0;
  while ((unsigned int)--s > (unsigned int)str) {
  9c:	11 97       	sbiw	r26, 0x01	; 1
  9e:	ea 17       	cp	r30, r26
  a0:	fb 07       	cpc	r31, r27
  a2:	28 f4       	brcc	.+10     	; 0xae <__SREG__+0x6f>
    i = *s;
  a4:	8c 91       	ld	r24, X
    *s = *str;
  a6:	90 81       	ld	r25, Z
  a8:	9c 93       	st	X, r25
    *str++ = i;
  aa:	81 93       	st	Z+, r24
  ac:	f7 cf       	rjmp	.-18     	; 0x9c <__SREG__+0x5d>
  }
  return s1;
  #undef D
}
  ae:	cb 01       	movw	r24, r22
  b0:	df 91       	pop	r29
  b2:	cf 91       	pop	r28
  b4:	1f 91       	pop	r17
  b6:	0f 91       	pop	r16
  b8:	ff 90       	pop	r15
  ba:	ef 90       	pop	r14
  bc:	df 90       	pop	r13
  be:	08 95       	ret

000000c0 <u32toa>:

char* u32toa(uint32_t val, char *buf){
  c0:	cf 92       	push	r12
  c2:	df 92       	push	r13
  c4:	ef 92       	push	r14
  c6:	ff 92       	push	r15
  c8:	cf 93       	push	r28
  ca:	df 93       	push	r29
  cc:	dc 01       	movw	r26, r24
  ce:	cb 01       	movw	r24, r22
  buf+=10;
  d0:	ea 01       	movw	r28, r20
  d2:	2a 96       	adiw	r28, 0x0a	; 10
  buf[1] = 0;
  d4:	fa 01       	movw	r30, r20
  d6:	13 86       	std	Z+11, r1	; 0x0b
  do{
    buf[0] = val % 10;
  d8:	2a e0       	ldi	r18, 0x0A	; 10
  da:	c2 2e       	mov	r12, r18
  dc:	d1 2c       	mov	r13, r1
  de:	e1 2c       	mov	r14, r1
  e0:	f1 2c       	mov	r15, r1
    val /= 10;
  e2:	bc 01       	movw	r22, r24
  e4:	cd 01       	movw	r24, r26
  e6:	a7 01       	movw	r20, r14
  e8:	96 01       	movw	r18, r12
  ea:	36 d0       	rcall	.+108    	; 0x158 <__udivmodsi4>
  ec:	da 01       	movw	r26, r20
  ee:	c9 01       	movw	r24, r18
    if(buf[0] < 10)buf[0] += '0'; else buf[0] = buf[0] - 0x0A + 'A';
  f0:	60 5d       	subi	r22, 0xD0	; 208
  f2:	68 83       	st	Y, r22
    buf--;
  f4:	21 97       	sbiw	r28, 0x01	; 1
  }while(val);
  f6:	23 2b       	or	r18, r19
  f8:	24 2b       	or	r18, r20
  fa:	25 2b       	or	r18, r21
  fc:	91 f7       	brne	.-28     	; 0xe2 <u32toa+0x22>
  return buf;
}
  fe:	ce 01       	movw	r24, r28
 100:	df 91       	pop	r29
 102:	cf 91       	pop	r28
 104:	ff 90       	pop	r15
 106:	ef 90       	pop	r14
 108:	df 90       	pop	r13
 10a:	cf 90       	pop	r12
 10c:	08 95       	ret

0000010e <main>:

int main(){
 10e:	cf 93       	push	r28
 110:	df 93       	push	r29
 112:	cd b7       	in	r28, 0x3d	; 61
 114:	de b7       	in	r29, 0x3e	; 62
 116:	64 97       	sbiw	r28, 0x14	; 20
 118:	0f b6       	in	r0, 0x3f	; 63
 11a:	f8 94       	cli
 11c:	de bf       	out	0x3e, r29	; 62
 11e:	0f be       	out	0x3f, r0	; 63
 120:	cd bf       	out	0x3d, r28	; 61
  char buf[20];
  volatile char *res;
  res = utoa10(0x12345678, buf);
 122:	ae 01       	movw	r20, r28
 124:	4f 5f       	subi	r20, 0xFF	; 255
 126:	5f 4f       	sbci	r21, 0xFF	; 255
 128:	68 e7       	ldi	r22, 0x78	; 120
 12a:	76 e5       	ldi	r23, 0x56	; 86
 12c:	84 e3       	ldi	r24, 0x34	; 52
 12e:	92 e1       	ldi	r25, 0x12	; 18
 130:	83 df       	rcall	.-250    	; 0x38 <utoa10>
  res = u32toa(0x87654321, buf);
 132:	ae 01       	movw	r20, r28
 134:	4f 5f       	subi	r20, 0xFF	; 255
 136:	5f 4f       	sbci	r21, 0xFF	; 255
 138:	61 e2       	ldi	r22, 0x21	; 33
 13a:	73 e4       	ldi	r23, 0x43	; 67
 13c:	85 e6       	ldi	r24, 0x65	; 101
 13e:	97 e8       	ldi	r25, 0x87	; 135
 140:	bf df       	rcall	.-130    	; 0xc0 <u32toa>
}
 142:	80 e0       	ldi	r24, 0x00	; 0
 144:	90 e0       	ldi	r25, 0x00	; 0
 146:	64 96       	adiw	r28, 0x14	; 20
 148:	0f b6       	in	r0, 0x3f	; 63
 14a:	f8 94       	cli
 14c:	de bf       	out	0x3e, r29	; 62
 14e:	0f be       	out	0x3f, r0	; 63
 150:	cd bf       	out	0x3d, r28	; 61
 152:	df 91       	pop	r29
 154:	cf 91       	pop	r28
 156:	08 95       	ret

00000158 <__udivmodsi4>:
 158:	a1 e2       	ldi	r26, 0x21	; 33
 15a:	1a 2e       	mov	r1, r26
 15c:	aa 1b       	sub	r26, r26
 15e:	bb 1b       	sub	r27, r27
 160:	fd 01       	movw	r30, r26
 162:	0d c0       	rjmp	.+26     	; 0x17e <__udivmodsi4_ep>

00000164 <__udivmodsi4_loop>:
 164:	aa 1f       	adc	r26, r26
 166:	bb 1f       	adc	r27, r27
 168:	ee 1f       	adc	r30, r30
 16a:	ff 1f       	adc	r31, r31
 16c:	a2 17       	cp	r26, r18
 16e:	b3 07       	cpc	r27, r19
 170:	e4 07       	cpc	r30, r20
 172:	f5 07       	cpc	r31, r21
 174:	20 f0       	brcs	.+8      	; 0x17e <__udivmodsi4_ep>
 176:	a2 1b       	sub	r26, r18
 178:	b3 0b       	sbc	r27, r19
 17a:	e4 0b       	sbc	r30, r20
 17c:	f5 0b       	sbc	r31, r21

0000017e <__udivmodsi4_ep>:
 17e:	66 1f       	adc	r22, r22
 180:	77 1f       	adc	r23, r23
 182:	88 1f       	adc	r24, r24
 184:	99 1f       	adc	r25, r25
 186:	1a 94       	dec	r1
 188:	69 f7       	brne	.-38     	; 0x164 <__udivmodsi4_loop>
 18a:	60 95       	com	r22
 18c:	70 95       	com	r23
 18e:	80 95       	com	r24
 190:	90 95       	com	r25
 192:	9b 01       	movw	r18, r22
 194:	ac 01       	movw	r20, r24
 196:	bd 01       	movw	r22, r26
 198:	cf 01       	movw	r24, r30
 19a:	08 95       	ret

0000019c <__umulsidi3>:
 19c:	e8 94       	clt

0000019e <__umulsidi3_helper>:
 19e:	df 93       	push	r29
 1a0:	cf 93       	push	r28
 1a2:	fc 01       	movw	r30, r24
 1a4:	db 01       	movw	r26, r22
 1a6:	3f d0       	rcall	.+126    	; 0x226 <__umulhisi3>
 1a8:	7f 93       	push	r23
 1aa:	6f 93       	push	r22
 1ac:	e9 01       	movw	r28, r18
 1ae:	9a 01       	movw	r18, r20
 1b0:	ac 01       	movw	r20, r24
 1b2:	bf 93       	push	r27
 1b4:	af 93       	push	r26
 1b6:	3f 93       	push	r19
 1b8:	2f 93       	push	r18
 1ba:	df 01       	movw	r26, r30
 1bc:	34 d0       	rcall	.+104    	; 0x226 <__umulhisi3>
 1be:	26 f4       	brtc	.+8      	; 0x1c8 <__umulsidi3_helper+0x2a>
 1c0:	6c 1b       	sub	r22, r28
 1c2:	7d 0b       	sbc	r23, r29
 1c4:	82 0b       	sbc	r24, r18
 1c6:	93 0b       	sbc	r25, r19
 1c8:	9e 01       	movw	r18, r28
 1ca:	eb 01       	movw	r28, r22
 1cc:	fc 01       	movw	r30, r24
 1ce:	37 d0       	rcall	.+110    	; 0x23e <__muldi3_6>
 1d0:	af 91       	pop	r26
 1d2:	bf 91       	pop	r27
 1d4:	2f 91       	pop	r18
 1d6:	3f 91       	pop	r19
 1d8:	32 d0       	rcall	.+100    	; 0x23e <__muldi3_6>
 1da:	be 01       	movw	r22, r28
 1dc:	cf 01       	movw	r24, r30
 1de:	f9 01       	movw	r30, r18
 1e0:	2f 91       	pop	r18
 1e2:	3f 91       	pop	r19
 1e4:	cf 91       	pop	r28
 1e6:	df 91       	pop	r29
 1e8:	08 95       	ret

000001ea <__ashrdi3>:
 1ea:	97 fb       	bst	r25, 7
 1ec:	10 f8       	bld	r1, 0

000001ee <__lshrdi3>:
 1ee:	16 94       	lsr	r1
 1f0:	00 08       	sbc	r0, r0
 1f2:	0f 93       	push	r16
 1f4:	08 30       	cpi	r16, 0x08	; 8
 1f6:	98 f0       	brcs	.+38     	; 0x21e <__lshrdi3+0x30>
 1f8:	08 50       	subi	r16, 0x08	; 8
 1fa:	23 2f       	mov	r18, r19
 1fc:	34 2f       	mov	r19, r20
 1fe:	45 2f       	mov	r20, r21
 200:	56 2f       	mov	r21, r22
 202:	67 2f       	mov	r22, r23
 204:	78 2f       	mov	r23, r24
 206:	89 2f       	mov	r24, r25
 208:	90 2d       	mov	r25, r0
 20a:	f4 cf       	rjmp	.-24     	; 0x1f4 <__lshrdi3+0x6>
 20c:	05 94       	asr	r0
 20e:	97 95       	ror	r25
 210:	87 95       	ror	r24
 212:	77 95       	ror	r23
 214:	67 95       	ror	r22
 216:	57 95       	ror	r21
 218:	47 95       	ror	r20
 21a:	37 95       	ror	r19
 21c:	27 95       	ror	r18
 21e:	0a 95       	dec	r16
 220:	aa f7       	brpl	.-22     	; 0x20c <__lshrdi3+0x1e>
 222:	0f 91       	pop	r16
 224:	08 95       	ret

00000226 <__umulhisi3>:
 226:	a2 9f       	mul	r26, r18
 228:	b0 01       	movw	r22, r0
 22a:	b3 9f       	mul	r27, r19
 22c:	c0 01       	movw	r24, r0
 22e:	a3 9f       	mul	r26, r19
 230:	01 d0       	rcall	.+2      	; 0x234 <__umulhisi3+0xe>
 232:	b2 9f       	mul	r27, r18
 234:	70 0d       	add	r23, r0
 236:	81 1d       	adc	r24, r1
 238:	11 24       	eor	r1, r1
 23a:	91 1d       	adc	r25, r1
 23c:	08 95       	ret

0000023e <__muldi3_6>:
 23e:	f3 df       	rcall	.-26     	; 0x226 <__umulhisi3>
 240:	46 0f       	add	r20, r22
 242:	57 1f       	adc	r21, r23
 244:	c8 1f       	adc	r28, r24
 246:	d9 1f       	adc	r29, r25
 248:	08 f4       	brcc	.+2      	; 0x24c <__muldi3_6+0xe>
 24a:	31 96       	adiw	r30, 0x01	; 1
 24c:	08 95       	ret

0000024e <_exit>:
 24e:	f8 94       	cli

00000250 <__stop_program>:
 250:	ff cf       	rjmp	.-2      	; 0x250 <__stop_program>
