Rev 8793 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8793 | Rev 9765 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | /* memcpy( void *, const void *, size_t ) |
- | |
2 | - | ||
3 | This file is part of the Public Domain C Library (PDCLib). |
- | |
4 | Permission is granted to use, modify, and / or redistribute at will. |
- | |
5 | */ |
- | |
6 | - | ||
7 | #include |
1 | #include |
Line 8... | Line 2... | ||
8 | 2 | ||
9 | void * memcpy( void * s1, const void * s2, size_t n ) |
- | |
10 | { |
- | |
11 | char * dest = ( char * ) s1; |
- | |
12 | const char * src = ( const char * ) s2; |
- | |
13 | - | ||
14 | while ( n-- ) |
3 | void* memcpy(void* _dest, const void* _src, size_t _n) |
- | 4 | { |
|
- | 5 | int d0, d1, d2; |
|
- | 6 | __asm__ __volatile__( |
|
15 | { |
7 | "rep ; movsl\n\t" |
- | 8 | "testb $2,%b4\n\t" |
|
- | 9 | "je 1f\n\t" |
|
- | 10 | "movsw\n" |
|
- | 11 | "1:\ttestb $1,%b4\n\t" |
|
- | 12 | "je 2f\n\t" |
|
16 | *dest++ = *src++; |
13 | "movsb\n" |
17 | } |
- | |
- | 14 | "2:" |
|
- | 15 | : "=&c"(d0), "=&D"(d1), "=&S"(d2) |
|
- | 16 | : "0"(_n / 4), "q"(_n), "1"((long)_dest), "2"((long)_src) |
|
18 | 17 | : "memory"); |
|
19 | return s1; |
18 | return (_dest); |
20 | } |
19 | } |