Rev 6410 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6410 | Rev 6433 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | 5 | ||
6 | public memcpy |
6 | public memcpy |
Line 7... | Line 7... | ||
7 | public memmove |
7 | public memmove |
- | 8 | ||
8 | 9 | proc memcpy c, to:dword,from:dword,count:dword |
|
9 | proc memcpy c, to:dword,from:dword,count:dword |
10 | push esi |
10 | 11 | push edi |
|
11 | mov ecx,[count] |
12 | mov ecx,[count] |
12 | test ecx,ecx |
- | |
13 | jz no_copy_block |
13 | test ecx,ecx |
14 | 14 | jz no_copy_block |
|
- | 15 | mov esi,[from] |
|
15 | mov esi,[from] |
16 | mov edi,[to] |
16 | mov edi,[to] |
17 | cld |
Line -... | Line 18... | ||
- | 18 | rep movsb |
|
- | 19 | no_copy_block: |
|
- | 20 | ||
17 | rep movsb |
21 | pop edi |
18 | no_copy_block: |
22 | pop esi |
Line 19... | Line 23... | ||
19 | 23 | mov eax, [to] |
|
Line -... | Line 24... | ||
- | 24 | ret |
|
- | 25 | endp |
|
20 | ret |
26 | |
21 | endp |
27 | proc memmove c, to:dword,from:dword,count:dword |
22 | 28 | ||
23 | proc memmove c, to:dword,from:dword,count:dword |
- | |
24 | 29 | push esi |
|
25 | mov ecx,[count] |
30 | push edi |
- | 31 | mov ecx,[count] |
|
- | 32 | test ecx,ecx |
|
- | 33 | jz no_copy_block_ |
|
- | 34 | mov esi,[from] |
|
- | 35 | mov edi,[to] |
|
- | 36 | cmp esi, edi |
|
- | 37 | je no_copy_block_ |
|
- | 38 | jg copy_ |
|
- | 39 | add esi, ecx |
|
26 | test ecx,ecx |
40 | add edi, ecx |
- | 41 | dec esi |
|
27 | jz no_copy_block_ |
42 | dec edi |
Line -... | Line 43... | ||
- | 43 | std |
|
- | 44 | copy_: |
|
- | 45 | rep movsb |
|
28 | 46 | cld |
|
29 | mov esi,[from] |
47 | no_copy_block_: |
30 | mov edi,[to] |
48 |