リスト5●VIsual C++ .NET 2003がリスト3から生成したアセンブリ・コード(Releaseモード)
10で割る処理の部分
; 105 : data[y*nMaxX + x].Result = (data[y*nMaxX + x].R*3
; 106 : + data[y*nMaxX + x].G*6
; 107 : + data[y*nMaxX + x].B)/10;
mov edx, DWORD PTR [ecx-4]
mov eax, DWORD PTR [ecx-8]
lea eax, DWORD PTR [eax+edx*2]
lea edx, DWORD PTR [eax+eax*2]
add edx, DWORD PTR [ecx]
mov eax, 1717986919 ; 66666667H
imul edx
sar edx, 2
mov eax, edx
shr eax, 31 ; 0000001fH
add eax, edx
mov DWORD PTR [ecx+4], eax
add ecx, 16 ; 00000010H
dec edi
jne SHORT $L115165