Rich Felker
12 years ago
|
@@ -0,0 +1,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
|
|
@@ -0,0 +1,22 @@
|
|
|
+.global memcpy
|
|
|
+.type memcpy,@function
|
|
|
+memcpy:
|
|
|
+ mov %rdi,%rax
|
|
|
+ cmp $8,%rdx
|
|
|
+ jc 1f
|
|
|
+ test $7,%edi
|
|
|
+ jz 1f
|
|
|
+2: movsb
|
|
|
+ dec %rdx
|
|
|
+ test $7,%edi
|
|
|
+ jnz 2b
|
|
|
+1: mov %rdx,%rcx
|
|
|
+ shr $3,%rcx
|
|
|
+ rep
|
|
|
+ movsq
|
|
|
+ and $7,%edx
|
|
|
+ jz 1f
|
|
|
+2: movsb
|
|
|
+ dec %edx
|
|
|
+ jnz 2b
|
|
|
+1: ret
|