Rev 1408 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1627 | serge | 1 | /* memcpy() Author: Kees J. Bot */ |
2 | /* 2 Jan 1994 */ |
||
1408 | serge | 3 | |
1627 | serge | 4 | /* void *memcpy(void *s1, const void *s2, size_t n) */ |
5 | /* Copy a chunk of memory. */ |
||
6 | /* This routine need not handle overlap, so it does not handle overlap. */ |
||
7 | /* One could simply call __memmove, the cost of the overlap check is */ |
||
8 | /* negligible, but you are dealing with a programmer who believes that if */ |
||
9 | /* anything can go wrong, it should go wrong. */ |
||
10 | /* */ |
||
11 | #include "asm.h" |
||
1408 | serge | 12 | |
1627 | serge | 13 | ENTRY(memcpy) |
14 | push %ebp |
||
15 | movl %esp, %ebp |
||
16 | push %esi |
||
17 | push %edi |
||
18 | movl 8(%ebp), %edi /* String s1 */ |
||
19 | movl 12(%ebp), %esi /* String s2 */ |
||
20 | movl 16(%ebp), %ecx /* Length */ |
||
21 | /* No overlap check here */ |
||
22 | jmp _C_LABEL(_memcpy) /* Call the part of __memmove that copies up */ |