内联汇编优化的TAlpha::FillSolidColor 部分汇编

 if ((lr & 1) == 1)
  {
   asm
    {
     cld
    }
   lr >>= 1;
   for (; i >= 0; i--)
    {
     //memcpy(ptrDest, ptrBuffer, lr);
     asm
      {
       mov ecx, 1
       mov esi, ptrBuffer
       mov edi, ptrDest
       rep movsb
       mov ecx, lr
       mov esi, ptrBuffer
       mov edi, ptrDest
       inc esi
       inc edi
       rep movsw
      }
     ptrDest += ld;
     //memcpy(ptrDest, ptrBuffer, lr);
     asm
      {
       mov ecx, 1
       mov esi, ptrBuffer
       mov edi, ptrDest
       rep movsb
       mov ecx, lr
       mov esi, ptrBuffer
       mov edi, ptrDest
       inc esi
       inc edi
       rep movsw
      }
     ptrDest += ld;
     i--;
    }
  }

:00424490 8B55EC      mov edx, dword ptr [ebp-14]
:00424493 83E201      and edx, 00000001
:00424496 4A          dec edx
:00424497 7552        jne 004244EB
:00424499 FC          cld
:0042449A D17DEC      sar dword ptr [ebp-14], 1 ; lr >>= 1
:0042449D 85DB        test ebx, ebx
:0042449F 7C7C        jl 0042451D
:004244A1 B901000000  mov ecx, 00000001
:004244A6 8B75FC      mov esi, dword ptr [ebp-04] ; mov esi, ptrBuffer
:004244A9 8B7DF4      mov edi, dword ptr [ebp-0C] ; mov edi, ptrDest
:004244AC F3          repz
:004244AD A4          movsb
:004244AE 8B4DEC      mov ecx, dword ptr [ebp-14] ; mov ecx, lr
:004244B1 8B75FC      mov esi, dword ptr [ebp-04]
:004244B4 8B7DF4      mov edi, dword ptr [ebp-0C]
:004244B7 46          inc esi
:004244B8 47          inc edi
:004244B9 F3          repz
:004244BA 66A5        movsw
:004244BC 8B4DE8      mov ecx, dword ptr [ebp-18] ; ecx = ld
:004244BF 014DF4      add dword ptr [ebp-0C], ecx ; ptrDest += ld;
:004244C2 B901000000  mov ecx, 00000001
:004244C7 8B75FC      mov esi, dword ptr [ebp-04]
:004244CA 8B7DF4      mov edi, dword ptr [ebp-0C]
:004244CD F3          repz
:004244CE A4          movsb
:004244CF 8B4DEC      mov ecx, dword ptr [ebp-14]
:004244D2 8B75FC      mov esi, dword ptr [ebp-04]
:004244D5 8B7DF4      mov edi, dword ptr [ebp-0C]
:004244D8 46          inc esi
:004244D9 47          inc edi
:004244DA F3          repz
:004244DB 66A5        movsw
:004244DD 8B45E8      mov eax, dword ptr [ebp-18]
:004244E0 0145F4      add dword ptr [ebp-0C], eax
:004244E3 4B          dec ebx
:004244E4 4B          dec ebx
:004244E5 85DB        test ebx, ebx
:004244E7 7DB8        jge 004244A1

 else
  {
   asm
    {
     cld
    }
   lr >>= 1;
   for (; i >= 0; i--)
    {
     //memcpy(ptrDest, ptrBuffer, lr);
     asm
      {
       mov ecx, lr
       mov esi, ptrBuffer
       mov edi, ptrDest
       rep movsw
      }
     ptrDest += ld;
     //memcpy(ptrDest, ptrBuffer, lr);
     asm
      {
       mov ecx, lr
       mov esi, ptrBuffer
       mov edi, ptrDest
       rep movsw
      }
     ptrDest += ld;
     i--;
    }
  }

:004244EB FC      cld
:004244EC D17DEC  sar dword ptr [ebp-14], 1 ; lr >>= 1
:004244EF 85DB    test ebx, ebx
:004244F1 7C2A    jl 0042451D
:004244F3 8B4DEC  mov ecx, dword ptr [ebp-14] ; mov ecx, lr
:004244F6 8B75FC  mov esi, dword ptr [ebp-04] ; mov esi, ptrBuffer
:004244F9 8B7DF4  mov edi, dword ptr [ebp-0C] ; mov edi, ptrDest
:004244FC F3      repz
:004244FD 66A5    movsw
:004244FF 8B55E8  mov edx, dword ptr [ebp-18] ; edx = ld
:00424502 0155F4  add dword ptr [ebp-0C], edx ; ptrDest += ld
:00424505 8B4DEC  mov ecx, dword ptr [ebp-14]
:00424508 8B75FC  mov esi, dword ptr [ebp-04]
:0042450B 8B7DF4  mov edi, dword ptr [ebp-0C]
:0042450E F3      repz
:0042450F 66A5    movsw
:00424511 8B4DE8  mov ecx, dword ptr [ebp-18]
:00424514 014DF4  add dword ptr [ebp-0C], ecx
:00424517 4B      dec ebx
:00424518 4B      dec ebx
:00424519 85DB    test ebx, ebx
:0042451B 7DD6    jge 004244F3

你可能感兴趣的:(内联汇编优化的TAlpha::FillSolidColor 部分汇编)