内联汇编优化版
#ifdef _calpha_using_inlineasm_
i = Height - 1;
if (i < 0)
return;
__asm
{
mov ecx, Width
mov eax, ptrDest
mov edx, ptrSrc
mov esi, idPixelAdd
@2:
mov edi, ecx
@1:
mov bl, byte ptr [eax]
cmp bl, bmaskr
je short @3
mov bl, byte ptr [edx]
cmp bl, bmaskb
je short @4
inc edx
mov byte ptr [eax], bl
inc eax
mov bx, word ptr [edx]
mov word ptr [eax], bx
add eax, esi
add edx, isPixelAdd
jmp short @5
@4:
add eax, ld
add edx, ls
jmp short @5
@3:
mov bl, byte ptr [edx]
inc edx
mov byte ptr [eax], bl
inc eax
mov bx, word ptr [edx]
mov word ptr [eax], bx
add eax, esi
add edx, isPixelAdd
@5:
dec edi
test edi, edi
jge short @1
add eax, idLineAdd
add edx, isLineAdd
dec i
cmp i, 00000000
jge short @2
}
汇编代码
:004252C5 48 dec eax
:004252C6 8945DC mov dword ptr [ebp-24], eax ; dword ptr [ebp-24] = i
:004252C9 8B4DF4 m