d
Size: a a a
d
d
d
d
d
d
d
s
C
E
d
-ffreestanding), выдаёт такое:.file "memop.c"
.intel_syntax noprefix
.text
.align 16
.globl memcpy
.type memcpy, @function
memcpy:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 4
mov ebx, DWORD PTR [ebp+16]
mov ecx, DWORD PTR [ebp+8]
mov esi, DWORD PTR [ebp+12]
test ebx, ebx
je .L2
mov eax, ecx
lea edi, [ebx-1]
or eax, esi
mov DWORD PTR [ebp-16], edi
test al, 3
jne .L3
cmp edi, 2
jbe .L3
mov edi, ebx
mov eax, esi
mov edx, ecx
and edi, -4
add edi, esi
.align 16
.L4:
mov ecx, DWORD PTR [eax]
add eax, 4
add edx, 4
mov DWORD PTR [edx-4], ecx
cmp eax, edi
jne .L4
mov ecx, DWORD PTR [ebp+8]
mov eax, ebx
and eax, -4
lea edx, [ecx+eax]
add esi, eax
cmp ebx, eax
je .L2
movzx ebx, BYTE PTR [esi]
mov BYTE PTR [edx], bl
mov ebx, DWORD PTR [ebp-16]
sub ebx, eax
je .L2
movzx eax, BYTE PTR [esi+1]
mov BYTE PTR [edx+1], al
cmp ebx, 1
je .L2
movzx eax, BYTE PTR [esi+2]
mov BYTE PTR [edx+2], al
.L2:
add esp, 4
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
.align 16
.L3:
add ebx, ecx
mov edi, ecx
.align 16
.L6:
movsb
cmp ebx, edi
jne .L6
add esp, 4
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
.size memcpy, .-memcpy
.ident "GCC: (GNU) 11.2.0"
E
d
d