鱼C论坛

 找回密码
 立即注册
查看: 3009|回复: 2

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

[复制链接]
发表于 2017-5-22 15:31:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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[k0 + 0];
                        BYTE U = lpYUY2[k0 + 1];
                        BYTE Y1 = lpYUY2[k0 + 2];
                        BYTE V = lpYUY2[k0 + 3];
                       
                        INT Y = Y0;
                        INT C = Y - 16;
                        INT D = U - 128;
                        INT E = V - 128;
                        lpRGB32[k1 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
                        lpRGB32[k1 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
                        lpRGB32[k1 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B

                        Y = Y1;
                        C = Y - 16;
                        D = U - 128;
                        E = V - 128;
                        lpRGB32[k2 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
                        lpRGB32[k2 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
                        lpRGB32[k2 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B
                }
        }
转对   重谢 联系我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-1 15:01:13 | 显示全部楼层
自己顶一下  没大神么。。。  急求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-3 07:05:14 | 显示全部楼层
int main(void)
{
013416C0  push        ebp  
013416C1  mov         ebp,esp  
013416C3  sub         esp,0CA0h  
013416C9  push        ebx  
013416CA  push        esi  
013416CB  push        edi  
013416CC  lea         edi,[ebp-0CA0h]  
013416D2  mov         ecx,328h  
013416D7  mov         eax,0CCCCCCCCh  
013416DC  rep stos    dword ptr es:[edi]  
013416DE  mov         eax,dword ptr [__security_cookie (0134801Ch)]  
013416E3  xor         eax,ebp  
013416E5  mov         dword ptr [ebp-4],eax  
013416E8  mov         byte ptr [ebp-0C99h],0  
013416EF  mov         byte ptr [ebp-0C8Dh],0  
        DWORD dwHeight, dwWidth;
        BYTE lpYUY2[1024];
        BYTE lpRGB32[1024];

        for(DWORD i = 0; i < dwHeight; i++)
013416F6  mov         dword ptr [ebp-834h],0  
01341700  jmp         main+51h (01341711h)  
01341702  mov         eax,dword ptr [ebp-834h]  
01341708  add         eax,1  
0134170B  mov         dword ptr [ebp-834h],eax  
01341711  cmp         byte ptr [ebp-0C8Dh],0  
01341718  jne         main+67h (01341727h)  
0134171A  push        1341A8Fh  
0134171F  call        __RTC_UninitUse (013410C8h)  
01341724  add         esp,4  
01341727  mov         eax,dword ptr [ebp-834h]  
0134172D  cmp         eax,dword ptr [dwHeight]  
01341730  jae         main+367h (01341A27h)  
        {
                for(DWORD j = 0; j < dwWidth * 2; j += 4)
01341736  mov         dword ptr [ebp-840h],0  
01341740  jmp         main+91h (01341751h)  
01341742  mov         eax,dword ptr [ebp-840h]  
01341748  add         eax,4  
0134174B  mov         dword ptr [ebp-840h],eax  
01341751  cmp         byte ptr [ebp-0C99h],0  
01341758  jne         main+0A7h (01341767h)  
0134175A  push        1341A87h  
0134175F  call        __RTC_UninitUse (013410C8h)  
01341764  add         esp,4  
01341767  mov         eax,dword ptr [dwWidth]  
0134176A  shl         eax,1  
0134176C  cmp         dword ptr [ebp-840h],eax  
01341772  jae         main+362h (01341A22h)  
                {
                        DWORD k0 = i * dwWidth * 2 + j;
01341778  cmp         byte ptr [ebp-0C99h],0  
0134177F  jne         main+0CEh (0134178Eh)  
01341781  push        1341A87h  
01341786  call        __RTC_UninitUse (013410C8h)  
0134178B  add         esp,4  
0134178E  mov         eax,dword ptr [ebp-834h]  
01341794  imul        eax,dword ptr [dwWidth]  
01341798  mov         ecx,dword ptr [ebp-840h]  
0134179E  lea         edx,[ecx+eax*2]  
013417A1  mov         dword ptr [ebp-84Ch],edx  
                        DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
013417A7  cmp         byte ptr [ebp-0C99h],0  
013417AE  jne         main+0FDh (013417BDh)  
013417B0  push        1341A87h  
013417B5  call        __RTC_UninitUse (013410C8h)  
013417BA  add         esp,4  
013417BD  cmp         byte ptr [ebp-0C99h],0  
013417C4  jne         main+113h (013417D3h)  
                        DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
013417C6  push        1341A87h  
013417CB  call        __RTC_UninitUse (013410C8h)  
013417D0  add         esp,4  
013417D3  mov         eax,dword ptr [ebp-834h]  
013417D9  imul        eax,dword ptr [dwWidth]  
013417DD  mov         ecx,dword ptr [dwWidth]  
013417E0  sub         ecx,1  
013417E3  mov         edx,dword ptr [ebp-840h]  
013417E9  shr         edx,1  
013417EB  sub         ecx,edx  
013417ED  add         eax,ecx  
013417EF  shl         eax,2  
013417F2  mov         dword ptr [ebp-858h],eax  
                        DWORD k2 = k1 - 4;
013417F8  mov         eax,dword ptr [ebp-858h]  
013417FE  sub         eax,4  
01341801  mov         dword ptr [ebp-864h],eax  

                        //Y0 U0 Y1 V0  
                        BYTE Y0 = lpYUY2[k0 + 0];
01341807  mov         eax,dword ptr [ebp-84Ch]  
0134180D  mov         cl,byte ptr lpYUY2[eax]  
01341814  mov         byte ptr [ebp-86Dh],cl  
                        BYTE U = lpYUY2[k0 + 1];
0134181A  mov         eax,dword ptr [ebp-84Ch]  
01341820  mov         cl,byte ptr [ebp+eax-41Fh]  
01341827  mov         byte ptr [ebp-879h],cl  
                        BYTE Y1 = lpYUY2[k0 + 2];
0134182D  mov         eax,dword ptr [ebp-84Ch]  
01341833  mov         cl,byte ptr [ebp+eax-41Eh]  
0134183A  mov         byte ptr [ebp-885h],cl  
                        BYTE V = lpYUY2[k0 + 3];
01341840  mov         eax,dword ptr [ebp-84Ch]  
01341846  mov         cl,byte ptr [ebp+eax-41Dh]  
0134184D  mov         byte ptr [ebp-891h],cl  

                        INT Y = Y0;
01341853  movzx       eax,byte ptr [ebp-86Dh]  
0134185A  mov         dword ptr [ebp-8A0h],eax  
                        INT C = Y - 16;
01341860  mov         eax,dword ptr [ebp-8A0h]  
01341866  sub         eax,10h  
01341869  mov         dword ptr [ebp-8ACh],eax  
                        INT D = U - 128;
0134186F  movzx       eax,byte ptr [ebp-879h]  
01341876  sub         eax,80h  
0134187B  mov         dword ptr [ebp-8B8h],eax  
                        INT E = V - 128;
01341881  movzx       eax,byte ptr [ebp-891h]  
01341888  sub         eax,80h  
0134188D  mov         dword ptr [ebp-8C4h],eax  
                        lpRGB32[k1 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
01341893  imul        eax,dword ptr [ebp-8ACh],12Ah  
0134189D  imul        ecx,dword ptr [ebp-8C4h],199h  
013418A7  lea         edx,[eax+ecx+80h]  
013418AE  sar         edx,8  
013418B1  push        edx  
013418B2  call        _Clip255 (01341069h)  
013418B7  add         esp,4  
013418BA  mov         ecx,dword ptr [ebp-858h]  
013418C0  mov         byte ptr [ebp+ecx-826h],al  
                        lpRGB32[k1 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
013418C7  imul        eax,dword ptr [ebp-8ACh],12Ah  
013418D1  imul        ecx,dword ptr [ebp-8B8h],64h  
013418D8  sub         eax,ecx  
013418DA  imul        edx,dword ptr [ebp-8C4h],0D0h  
013418E4  sub         eax,edx  
013418E6  add         eax,80h  
013418EB  sar         eax,8  
013418EE  push        eax  
013418EF  call        _Clip255 (01341069h)  
013418F4  add         esp,4  
013418F7  mov         ecx,dword ptr [ebp-858h]  
013418FD  mov         byte ptr [ebp+ecx-827h],al  
                        lpRGB32[k1 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B
01341904  imul        eax,dword ptr [ebp-8ACh],12Ah  
0134190E  imul        ecx,dword ptr [ebp-8B8h],204h  
01341918  lea         edx,[eax+ecx+80h]  
0134191F  sar         edx,8  
01341922  push        edx  
01341923  call        _Clip255 (01341069h)  
01341928  add         esp,4  
0134192B  mov         ecx,dword ptr [ebp-858h]  
01341931  mov         byte ptr lpRGB32[ecx],al  

                        Y = Y1;
01341938  movzx       eax,byte ptr [ebp-885h]  

                        Y = Y1;
0134193F  mov         dword ptr [ebp-8A0h],eax  
                        C = Y - 16;
01341945  mov         eax,dword ptr [ebp-8A0h]  
0134194B  sub         eax,10h  
0134194E  mov         dword ptr [ebp-8ACh],eax  
                        D = U - 128;
01341954  movzx       eax,byte ptr [ebp-879h]  
0134195B  sub         eax,80h  
01341960  mov         dword ptr [ebp-8B8h],eax  
                        E = V - 128;
01341966  movzx       eax,byte ptr [ebp-891h]  
0134196D  sub         eax,80h  
01341972  mov         dword ptr [ebp-8C4h],eax  
                        lpRGB32[k2 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
01341978  imul        eax,dword ptr [ebp-8ACh],12Ah  
01341982  imul        ecx,dword ptr [ebp-8C4h],199h  
0134198C  lea         edx,[eax+ecx+80h]  
01341993  sar         edx,8  
01341996  push        edx  
01341997  call        _Clip255 (01341069h)  
0134199C  add         esp,4  
0134199F  mov         ecx,dword ptr [ebp-864h]  
013419A5  mov         byte ptr [ebp+ecx-826h],al  
                        lpRGB32[k2 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
013419AC  imul        eax,dword ptr [ebp-8ACh],12Ah  
013419B6  imul        ecx,dword ptr [ebp-8B8h],64h  
013419BD  sub         eax,ecx  
013419BF  imul        edx,dword ptr [ebp-8C4h],0D0h  
013419C9  sub         eax,edx  
013419CB  add         eax,80h  
013419D0  sar         eax,8  
013419D3  push        eax  
013419D4  call        _Clip255 (01341069h)  
013419D9  add         esp,4  
013419DC  mov         ecx,dword ptr [ebp-864h]  
013419E2  mov         byte ptr [ebp+ecx-827h],al  
                        lpRGB32[k2 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B
013419E9  imul        eax,dword ptr [ebp-8ACh],12Ah  
013419F3  imul        ecx,dword ptr [ebp-8B8h],204h  
013419FD  lea         edx,[eax+ecx+80h]  
01341A04  sar         edx,8  
01341A07  push        edx  
01341A08  call        _Clip255 (01341069h)  
01341A0D  add         esp,4  
01341A10  mov         ecx,dword ptr [ebp-864h]  
01341A16  mov         byte ptr lpRGB32[ecx],al  
                }
01341A1D  jmp         main+82h (01341742h)  
        }
01341A22  jmp         main+42h (01341702h)  

        return 0;
01341A27  xor         eax,eax  
}
01341A29  push        edx  
01341A2A  mov         ecx,ebp  
01341A2C  push        eax  
01341A2D  lea         edx,ds:[1341A58h]  
01341A33  call        @_RTC_CheckStackVars@8 (01341249h)  
01341A38  pop         eax  
01341A39  pop         edx  
01341A3A  pop         edi  
01341A3B  pop         esi  
01341A3C  pop         ebx  
01341A3D  mov         ecx,dword ptr [ebp-4]  
01341A40  xor         ecx,ebp  
01341A42  call        @__security_check_cookie@4 (0134125Dh)  
01341A47  add         esp,0CA0h  
01341A4D  cmp         ebp,esp  
01341A4F  call        __RTC_CheckEsp (0134110Eh)  
01341A54  mov         esp,ebp  
01341A56  pop         ebp  
01341A57  ret  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-3 05:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表