1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
.global memcpy .type memcpy,@function memcpy: push %esi push %edi mov 12(%esp),%edi mov 16(%esp),%esi mov 20(%esp),%ecx mov %edi,%eax cmp $4,%ecx jc 1f test $3,%edi jz 1f 2: movsb dec %ecx test $3,%edi jnz 2b 1: mov %ecx,%edx shr $2,%ecx rep movsl and $3,%edx jz 1f 2: movsb dec %edx jnz 2b 1: pop %edi pop %esi ret