panhui123 发表于 2017-5-22 15:31:41

一段代码的汇编转换,有大神知道么,,

本帖最后由 panhui123 于 2017-5-23 15:20 编辑

        for (DWORD i = 0; i < dwHeight; i++)
        {
                for (DWORD j = 0; j < dwWidth * 2; j += 4)
                {
                        DWORD k0 = i * dwWidth * 2 + j;
                        DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
                        DWORD k2 = k1 - 4;

                        //Y0 U0 Y1 V0
                        BYTE Y0 = lpYUY2;
                        BYTE U = lpYUY2;
                        BYTE Y1 = lpYUY2;
                        BYTE V = lpYUY2;
                       
                        INT Y = Y0;
                        INT C = Y - 16;
                        INT D = U - 128;
                        INT E = V - 128;
                        lpRGB32 = Clip255((298 * C + 409 * E + 128) >> 8);        // R
                        lpRGB32 = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
                        lpRGB32 = Clip255((298 * C + 516 * D + 128) >> 8);        // B

                        Y = Y1;
                        C = Y - 16;
                        D = U - 128;
                        E = V - 128;
                        lpRGB32 = Clip255((298 * C + 409 * E + 128) >> 8);        // R
                        lpRGB32 = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
                        lpRGB32 = Clip255((298 * C + 516 * D + 128) >> 8);        // B
                }
        }
转对   重谢 联系我

panhui123 发表于 2017-6-1 15:01:13

自己顶一下没大神么。。。急求

人造人 发表于 2017-6-3 07:05:14

int main(void)
{
013416C0push      ebp
013416C1mov         ebp,esp
013416C3sub         esp,0CA0h
013416C9push      ebx
013416CApush      esi
013416CBpush      edi
013416CClea         edi,
013416D2mov         ecx,328h
013416D7mov         eax,0CCCCCCCCh
013416DCrep stos    dword ptr es:
013416DEmov         eax,dword ptr
013416E3xor         eax,ebp
013416E5mov         dword ptr ,eax
013416E8mov         byte ptr ,0
013416EFmov         byte ptr ,0
        DWORD dwHeight, dwWidth;
        BYTE lpYUY2;
        BYTE lpRGB32;

        for(DWORD i = 0; i < dwHeight; i++)
013416F6mov         dword ptr ,0
01341700jmp         main+51h (01341711h)
01341702mov         eax,dword ptr
01341708add         eax,1
0134170Bmov         dword ptr ,eax
01341711cmp         byte ptr ,0
01341718jne         main+67h (01341727h)
0134171Apush      1341A8Fh
0134171Fcall      __RTC_UninitUse (013410C8h)
01341724add         esp,4
01341727mov         eax,dword ptr
0134172Dcmp         eax,dword ptr
01341730jae         main+367h (01341A27h)
        {
                for(DWORD j = 0; j < dwWidth * 2; j += 4)
01341736mov         dword ptr ,0
01341740jmp         main+91h (01341751h)
01341742mov         eax,dword ptr
01341748add         eax,4
0134174Bmov         dword ptr ,eax
01341751cmp         byte ptr ,0
01341758jne         main+0A7h (01341767h)
0134175Apush      1341A87h
0134175Fcall      __RTC_UninitUse (013410C8h)
01341764add         esp,4
01341767mov         eax,dword ptr
0134176Ashl         eax,1
0134176Ccmp         dword ptr ,eax
01341772jae         main+362h (01341A22h)
                {
                        DWORD k0 = i * dwWidth * 2 + j;
01341778cmp         byte ptr ,0
0134177Fjne         main+0CEh (0134178Eh)
01341781push      1341A87h
01341786call      __RTC_UninitUse (013410C8h)
0134178Badd         esp,4
0134178Emov         eax,dword ptr
01341794imul      eax,dword ptr
01341798mov         ecx,dword ptr
0134179Elea         edx,
013417A1mov         dword ptr ,edx
                        DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
013417A7cmp         byte ptr ,0
013417AEjne         main+0FDh (013417BDh)
013417B0push      1341A87h
013417B5call      __RTC_UninitUse (013410C8h)
013417BAadd         esp,4
013417BDcmp         byte ptr ,0
013417C4jne         main+113h (013417D3h)
                        DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
013417C6push      1341A87h
013417CBcall      __RTC_UninitUse (013410C8h)
013417D0add         esp,4
013417D3mov         eax,dword ptr
013417D9imul      eax,dword ptr
013417DDmov         ecx,dword ptr
013417E0sub         ecx,1
013417E3mov         edx,dword ptr
013417E9shr         edx,1
013417EBsub         ecx,edx
013417EDadd         eax,ecx
013417EFshl         eax,2
013417F2mov         dword ptr ,eax
                        DWORD k2 = k1 - 4;
013417F8mov         eax,dword ptr
013417FEsub         eax,4
01341801mov         dword ptr ,eax

                        //Y0 U0 Y1 V0
                        BYTE Y0 = lpYUY2;
01341807mov         eax,dword ptr
0134180Dmov         cl,byte ptr lpYUY2
01341814mov         byte ptr ,cl
                        BYTE U = lpYUY2;
0134181Amov         eax,dword ptr
01341820mov         cl,byte ptr
01341827mov         byte ptr ,cl
                        BYTE Y1 = lpYUY2;
0134182Dmov         eax,dword ptr
01341833mov         cl,byte ptr
0134183Amov         byte ptr ,cl
                        BYTE V = lpYUY2;
01341840mov         eax,dword ptr
01341846mov         cl,byte ptr
0134184Dmov         byte ptr ,cl

                        INT Y = Y0;
01341853movzx       eax,byte ptr
0134185Amov         dword ptr ,eax
                        INT C = Y - 16;
01341860mov         eax,dword ptr
01341866sub         eax,10h
01341869mov         dword ptr ,eax
                        INT D = U - 128;
0134186Fmovzx       eax,byte ptr
01341876sub         eax,80h
0134187Bmov         dword ptr ,eax
                        INT E = V - 128;
01341881movzx       eax,byte ptr
01341888sub         eax,80h
0134188Dmov         dword ptr ,eax
                        lpRGB32 = Clip255((298 * C + 409 * E + 128) >> 8);      // R
01341893imul      eax,dword ptr ,12Ah
0134189Dimul      ecx,dword ptr ,199h
013418A7lea         edx,
013418AEsar         edx,8
013418B1push      edx
013418B2call      _Clip255 (01341069h)
013418B7add         esp,4
013418BAmov         ecx,dword ptr
013418C0mov         byte ptr ,al
                        lpRGB32 = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);      // G
013418C7imul      eax,dword ptr ,12Ah
013418D1imul      ecx,dword ptr ,64h
013418D8sub         eax,ecx
013418DAimul      edx,dword ptr ,0D0h
013418E4sub         eax,edx
013418E6add         eax,80h
013418EBsar         eax,8
013418EEpush      eax
013418EFcall      _Clip255 (01341069h)
013418F4add         esp,4
013418F7mov         ecx,dword ptr
013418FDmov         byte ptr ,al
                        lpRGB32 = Clip255((298 * C + 516 * D + 128) >> 8);      // B
01341904imul      eax,dword ptr ,12Ah
0134190Eimul      ecx,dword ptr ,204h
01341918lea         edx,
0134191Fsar         edx,8
01341922push      edx
01341923call      _Clip255 (01341069h)
01341928add         esp,4
0134192Bmov         ecx,dword ptr
01341931mov         byte ptr lpRGB32,al

                        Y = Y1;
01341938movzx       eax,byte ptr

                        Y = Y1;
0134193Fmov         dword ptr ,eax
                        C = Y - 16;
01341945mov         eax,dword ptr
0134194Bsub         eax,10h
0134194Emov         dword ptr ,eax
                        D = U - 128;
01341954movzx       eax,byte ptr
0134195Bsub         eax,80h
01341960mov         dword ptr ,eax
                        E = V - 128;
01341966movzx       eax,byte ptr
0134196Dsub         eax,80h
01341972mov         dword ptr ,eax
                        lpRGB32 = Clip255((298 * C + 409 * E + 128) >> 8);      // R
01341978imul      eax,dword ptr ,12Ah
01341982imul      ecx,dword ptr ,199h
0134198Clea         edx,
01341993sar         edx,8
01341996push      edx
01341997call      _Clip255 (01341069h)
0134199Cadd         esp,4
0134199Fmov         ecx,dword ptr
013419A5mov         byte ptr ,al
                        lpRGB32 = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);      // G
013419ACimul      eax,dword ptr ,12Ah
013419B6imul      ecx,dword ptr ,64h
013419BDsub         eax,ecx
013419BFimul      edx,dword ptr ,0D0h
013419C9sub         eax,edx
013419CBadd         eax,80h
013419D0sar         eax,8
013419D3push      eax
013419D4call      _Clip255 (01341069h)
013419D9add         esp,4
013419DCmov         ecx,dword ptr
013419E2mov         byte ptr ,al
                        lpRGB32 = Clip255((298 * C + 516 * D + 128) >> 8);      // B
013419E9imul      eax,dword ptr ,12Ah
013419F3imul      ecx,dword ptr ,204h
013419FDlea         edx,
01341A04sar         edx,8
01341A07push      edx
01341A08call      _Clip255 (01341069h)
01341A0Dadd         esp,4
01341A10mov         ecx,dword ptr
01341A16mov         byte ptr lpRGB32,al
                }
01341A1Djmp         main+82h (01341742h)
        }
01341A22jmp         main+42h (01341702h)

        return 0;
01341A27xor         eax,eax
}
01341A29push      edx
01341A2Amov         ecx,ebp
01341A2Cpush      eax
01341A2Dlea         edx,ds:
01341A33call      @_RTC_CheckStackVars@8 (01341249h)
01341A38pop         eax
01341A39pop         edx
01341A3Apop         edi
01341A3Bpop         esi
01341A3Cpop         ebx
01341A3Dmov         ecx,dword ptr
01341A40xor         ecx,ebp
01341A42call      @__security_check_cookie@4 (0134125Dh)
01341A47add         esp,0CA0h
01341A4Dcmp         ebp,esp
01341A4Fcall      __RTC_CheckEsp (0134110Eh)
01341A54mov         esp,ebp
01341A56pop         ebp
01341A57ret
页: [1]
查看完整版本: 一段代码的汇编转换,有大神知道么,,