From eb227e96bd06a5b0f2f933187a679e7fb3382cd9 Mon Sep 17 00:00:00 2001 From: bxing Date: Fri, 28 Jul 2006 07:28:19 +0000 Subject: 1. Updated function headers for all assembly function 2. Optimized register usage in SetMemXX functions in all lib instances 3. Fixed a logical error in CopyMem for all lib instances git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1139 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm') diff --git a/MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm b/MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm index 7b3e5eafee..86677ef614 100644 --- a/MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm +++ b/MdePkg/Library/BaseMemoryLibRepStr/Ia32/CopyMem.asm @@ -25,14 +25,22 @@ .model flat,C .code +;------------------------------------------------------------------------------ +; VOID * +; InternalMemCopyMem ( +; IN VOID *Destination, +; IN VOID *Source, +; IN UINTN Count +; ) +;------------------------------------------------------------------------------ InternalMemCopyMem PROC USES esi edi mov esi, [esp + 16] ; esi <- Source mov edi, [esp + 12] ; edi <- Destination mov edx, [esp + 20] ; edx <- Count - lea eax, [edi + edx - 1] ; eax <- End of Destination + lea eax, [esi + edx - 1] ; eax <- End of Source cmp esi, edi jae @F - cmp eax, esi + cmp eax, edi jae @CopyBackward ; Copy backward if overlapped @@: mov ecx, edx @@ -41,8 +49,8 @@ InternalMemCopyMem PROC USES esi edi rep movsd ; Copy as many Dwords as possible jmp @CopyBytes @CopyBackward: - mov edi, eax ; edi <- End of Destination - lea esi, [esi + edx - 1] ; esi <- End of Source + mov esi, eax ; esi <- End of Source + lea edi, [edi + edx - 1] ; edi <- End of Destination std @CopyBytes: mov ecx, edx -- cgit v1.2.3