mirror of
https://github.com/reactos/reactos.git
synced 2025-07-02 19:11:24 +00:00
[CRT] Add CFI annotatiions to memmove function
This commit is contained in:
parent
6a31fe6ca7
commit
0c34c067c4
1 changed files with 28 additions and 13 deletions
|
@ -14,15 +14,20 @@ _memcpy:
|
||||||
FUNC _memmove
|
FUNC _memmove
|
||||||
FPO 0, 3, 5, 2, 1, FRAME_NONFPO
|
FPO 0, 3, 5, 2, 1, FRAME_NONFPO
|
||||||
push ebp
|
push ebp
|
||||||
|
CFI_ADJUST_CFA_OFFSET 4
|
||||||
|
CFI_REL_OFFSET ebp, 0
|
||||||
mov ebp, esp
|
mov ebp, esp
|
||||||
|
CFI_DEF_CFA_REGISTER ebp
|
||||||
|
|
||||||
push esi
|
push esi
|
||||||
|
CFI_REL_OFFSET esi, -4
|
||||||
push edi
|
push edi
|
||||||
|
CFI_REL_OFFSET edi, -8
|
||||||
|
|
||||||
mov edi, [ebp + 8]
|
mov edi, [ebp + 8]
|
||||||
mov esi, [ebp + 12]
|
mov esi, [ebp + 12]
|
||||||
mov ecx, [ebp + 16]
|
mov ecx, [ebp + 16]
|
||||||
|
|
||||||
cmp edi, esi
|
cmp edi, esi
|
||||||
jbe .CopyUp
|
jbe .CopyUp
|
||||||
mov eax, ecx
|
mov eax, ecx
|
||||||
|
@ -30,9 +35,9 @@ FUNC _memmove
|
||||||
cmp edi, eax
|
cmp edi, eax
|
||||||
jb .CopyDown
|
jb .CopyDown
|
||||||
|
|
||||||
.CopyUp:
|
.CopyUp:
|
||||||
cld
|
cld
|
||||||
|
|
||||||
cmp ecx, 16
|
cmp ecx, 16
|
||||||
jb .L1
|
jb .L1
|
||||||
mov edx, ecx
|
mov edx, ecx
|
||||||
|
@ -53,29 +58,34 @@ FUNC _memmove
|
||||||
rep movsd
|
rep movsd
|
||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
and ecx, 3
|
and ecx, 3
|
||||||
.L1:
|
.L1:
|
||||||
test ecx, ecx
|
test ecx, ecx
|
||||||
je .L3
|
je .L3
|
||||||
rep movsb
|
rep movsb
|
||||||
.L3:
|
.L3:
|
||||||
mov eax, [ebp + 8]
|
mov eax, [ebp + 8]
|
||||||
pop edi
|
pop edi
|
||||||
|
CFI_SAME_VALUE edi
|
||||||
pop esi
|
pop esi
|
||||||
|
CFI_SAME_VALUE esi
|
||||||
leave
|
leave
|
||||||
|
CFI_ADJUST_CFA_OFFSET -4
|
||||||
|
CFI_SAME_VALUE ebp
|
||||||
|
CFI_DEF_CFA_REGISTER esp
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.CopyDown:
|
.CopyDown:
|
||||||
std
|
std
|
||||||
|
|
||||||
add edi, ecx
|
add edi, ecx
|
||||||
add esi, ecx
|
add esi, ecx
|
||||||
|
|
||||||
cmp ecx, 16
|
cmp ecx, 16
|
||||||
jb .L4
|
jb .L4
|
||||||
mov edx, ecx
|
mov edx, ecx
|
||||||
test edi, 3
|
test edi, 3
|
||||||
je .L5
|
je .L5
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make the destination dword aligned
|
* Make the destination dword aligned
|
||||||
*/
|
*/
|
||||||
|
@ -86,10 +96,10 @@ FUNC _memmove
|
||||||
dec edi
|
dec edi
|
||||||
rep movsb
|
rep movsb
|
||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
|
|
||||||
sub esi, 3
|
sub esi, 3
|
||||||
sub edi, 3
|
sub edi, 3
|
||||||
.L6:
|
.L6:
|
||||||
shr ecx, 2
|
shr ecx, 2
|
||||||
rep movsd
|
rep movsd
|
||||||
mov ecx, edx
|
mov ecx, edx
|
||||||
|
@ -97,14 +107,19 @@ FUNC _memmove
|
||||||
je .L7
|
je .L7
|
||||||
add esi, 3
|
add esi, 3
|
||||||
add edi, 3
|
add edi, 3
|
||||||
.L8:
|
.L8:
|
||||||
rep movsb
|
rep movsb
|
||||||
.L7:
|
.L7:
|
||||||
cld
|
cld
|
||||||
mov eax, [ebp + 8]
|
mov eax, [ebp + 8]
|
||||||
pop edi
|
pop edi
|
||||||
|
CFI_SAME_VALUE edi
|
||||||
pop esi
|
pop esi
|
||||||
|
CFI_SAME_VALUE esi
|
||||||
leave
|
leave
|
||||||
|
CFI_ADJUST_CFA_OFFSET -4
|
||||||
|
CFI_SAME_VALUE ebp
|
||||||
|
CFI_DEF_CFA_REGISTER esp
|
||||||
ret
|
ret
|
||||||
.L5:
|
.L5:
|
||||||
sub edi, 4
|
sub edi, 4
|
||||||
|
@ -113,7 +128,7 @@ FUNC _memmove
|
||||||
|
|
||||||
.L4:
|
.L4:
|
||||||
test ecx, ecx
|
test ecx, ecx
|
||||||
je .L7
|
je .L7
|
||||||
dec esi
|
dec esi
|
||||||
dec edi
|
dec edi
|
||||||
jmp .L8
|
jmp .L8
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue