LINUX.ORG.RU

История изменений

Исправление shkolnick-kun, (текущая версия) :

На amd64 (gcc):

14 	    b = a;
0x55555555514e	lea    rax,[rbp-0x400]
0x555555555155	lea    rdx,[rbp-0x200]
0x55555555515c	mov    ecx,0x40
0x555555555161	mov    rdi,rax
0x555555555164	mov    rsi,rdx
0x555555555167	rep movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi]

На AVR (gcc):

1195	    b = a;
=> 0x00006f3a <+44>:	ldi	r18, 0x20	; 32
   0x00006f3c <+46>:	movw	r24, r28
   0x00006f3e <+48>:	adiw	r24, 0x01	; 1
   0x00006f40 <+50>:	movw	r30, r24
   0x00006f42 <+52>:	movw	r26, r28
   0x00006f44 <+54>:	adiw	r26, 0x21	; 33
   0x00006f46 <+56>:	ld	r0, Z+
   0x00006f48 <+58>:	st	X+, r0
   0x00006f4a <+60>:	dec	r18
   0x00006f4c <+62>:	brne	.-8      	;  0x6f46 <main+56>

OK, оно сгенерировало саму memcpy, а не вызов…

Исходная версия shkolnick-kun, :

На amd64 (gcc):

14 	    b = a;
0x55555555514e	lea    rax,[rbp-0x400]
0x555555555155	lea    rdx,[rbp-0x200]
0x55555555515c	mov    ecx,0x40
0x555555555161	mov    rdi,rax
0x555555555164	mov    rsi,rdx
0x555555555167	rep movs QWORD PTR es:[rdi],QWORD PTR ds:[rsi]

На AVR (gcc):

1195	    b = a;
=> 0x00006f3a <+44>:	ldi	r18, 0x20	; 32
   0x00006f3c <+46>:	movw	r24, r28
   0x00006f3e <+48>:	adiw	r24, 0x01	; 1
   0x00006f40 <+50>:	movw	r30, r24
   0x00006f42 <+52>:	movw	r26, r28
   0x00006f44 <+54>:	adiw	r26, 0x21	; 33
   0x00006f46 <+56>:	ld	r0, Z+
   0x00006f48 <+58>:	st	X+, r0
   0x00006f4a <+60>:	dec	r18
   0x00006f4c <+62>:	brne	.-8      	;  0x6f46 <main+56>

OK, оно сгенерировало саму memcpyа не вызов…