Browse Source

memcpy asm for i386 and x86_64

rs-1.0
Rich Felker 14 years ago
parent
commit
aaa9eb5101
  1. 29
      src/string/i386/memcpy.s
  2. 22
      src/string/x86_64/memcpy.s

29
src/string/i386/memcpy.s

@ -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

22
src/string/x86_64/memcpy.s

@ -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
Loading…
Cancel
Save