鱼C论坛

 找回密码
 立即注册
查看: 3795|回复: 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
                }
        }
转对   重谢 联系我
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-1 15:01:13 | 显示全部楼层
自己顶一下  没大神么。。。  急求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  21.         for(DWORD i = 0; i < dwHeight; i++)
  22. 013416F6  mov         dword ptr [ebp-834h],0  
  23. 01341700  jmp         main+51h (01341711h)  
  24. 01341702  mov         eax,dword ptr [ebp-834h]  
  25. 01341708  add         eax,1  
  26. 0134170B  mov         dword ptr [ebp-834h],eax  
  27. 01341711  cmp         byte ptr [ebp-0C8Dh],0  
  28. 01341718  jne         main+67h (01341727h)  
  29. 0134171A  push        1341A8Fh  
  30. 0134171F  call        __RTC_UninitUse (013410C8h)  
  31. 01341724  add         esp,4  
  32. 01341727  mov         eax,dword ptr [ebp-834h]  
  33. 0134172D  cmp         eax,dword ptr [dwHeight]  
  34. 01341730  jae         main+367h (01341A27h)  
  35.         {
  36.                 for(DWORD j = 0; j < dwWidth * 2; j += 4)
  37. 01341736  mov         dword ptr [ebp-840h],0  
  38. 01341740  jmp         main+91h (01341751h)  
  39. 01341742  mov         eax,dword ptr [ebp-840h]  
  40. 01341748  add         eax,4  
  41. 0134174B  mov         dword ptr [ebp-840h],eax  
  42. 01341751  cmp         byte ptr [ebp-0C99h],0  
  43. 01341758  jne         main+0A7h (01341767h)  
  44. 0134175A  push        1341A87h  
  45. 0134175F  call        __RTC_UninitUse (013410C8h)  
  46. 01341764  add         esp,4  
  47. 01341767  mov         eax,dword ptr [dwWidth]  
  48. 0134176A  shl         eax,1  
  49. 0134176C  cmp         dword ptr [ebp-840h],eax  
  50. 01341772  jae         main+362h (01341A22h)  
  51.                 {
  52.                         DWORD k0 = i * dwWidth * 2 + j;
  53. 01341778  cmp         byte ptr [ebp-0C99h],0  
  54. 0134177F  jne         main+0CEh (0134178Eh)  
  55. 01341781  push        1341A87h  
  56. 01341786  call        __RTC_UninitUse (013410C8h)  
  57. 0134178B  add         esp,4  
  58. 0134178E  mov         eax,dword ptr [ebp-834h]  
  59. 01341794  imul        eax,dword ptr [dwWidth]  
  60. 01341798  mov         ecx,dword ptr [ebp-840h]  
  61. 0134179E  lea         edx,[ecx+eax*2]  
  62. 013417A1  mov         dword ptr [ebp-84Ch],edx  
  63.                         DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
  64. 013417A7  cmp         byte ptr [ebp-0C99h],0  
  65. 013417AE  jne         main+0FDh (013417BDh)  
  66. 013417B0  push        1341A87h  
  67. 013417B5  call        __RTC_UninitUse (013410C8h)  
  68. 013417BA  add         esp,4  
  69. 013417BD  cmp         byte ptr [ebp-0C99h],0  
  70. 013417C4  jne         main+113h (013417D3h)  
  71.                         DWORD k1 = (i * dwWidth + (dwWidth - 1 - j / 2)) * 4;
  72. 013417C6  push        1341A87h  
  73. 013417CB  call        __RTC_UninitUse (013410C8h)  
  74. 013417D0  add         esp,4  
  75. 013417D3  mov         eax,dword ptr [ebp-834h]  
  76. 013417D9  imul        eax,dword ptr [dwWidth]  
  77. 013417DD  mov         ecx,dword ptr [dwWidth]  
  78. 013417E0  sub         ecx,1  
  79. 013417E3  mov         edx,dword ptr [ebp-840h]  
  80. 013417E9  shr         edx,1  
  81. 013417EB  sub         ecx,edx  
  82. 013417ED  add         eax,ecx  
  83. 013417EF  shl         eax,2  
  84. 013417F2  mov         dword ptr [ebp-858h],eax  
  85.                         DWORD k2 = k1 - 4;
  86. 013417F8  mov         eax,dword ptr [ebp-858h]  
  87. 013417FE  sub         eax,4  
  88. 01341801  mov         dword ptr [ebp-864h],eax  

  89.                         //Y0 U0 Y1 V0  
  90.                         BYTE Y0 = lpYUY2[k0 + 0];
  91. 01341807  mov         eax,dword ptr [ebp-84Ch]  
  92. 0134180D  mov         cl,byte ptr lpYUY2[eax]  
  93. 01341814  mov         byte ptr [ebp-86Dh],cl  
  94.                         BYTE U = lpYUY2[k0 + 1];
  95. 0134181A  mov         eax,dword ptr [ebp-84Ch]  
  96. 01341820  mov         cl,byte ptr [ebp+eax-41Fh]  
  97. 01341827  mov         byte ptr [ebp-879h],cl  
  98.                         BYTE Y1 = lpYUY2[k0 + 2];
  99. 0134182D  mov         eax,dword ptr [ebp-84Ch]  
  100. 01341833  mov         cl,byte ptr [ebp+eax-41Eh]  
  101. 0134183A  mov         byte ptr [ebp-885h],cl  
  102.                         BYTE V = lpYUY2[k0 + 3];
  103. 01341840  mov         eax,dword ptr [ebp-84Ch]  
  104. 01341846  mov         cl,byte ptr [ebp+eax-41Dh]  
  105. 0134184D  mov         byte ptr [ebp-891h],cl  

  106.                         INT Y = Y0;
  107. 01341853  movzx       eax,byte ptr [ebp-86Dh]  
  108. 0134185A  mov         dword ptr [ebp-8A0h],eax  
  109.                         INT C = Y - 16;
  110. 01341860  mov         eax,dword ptr [ebp-8A0h]  
  111. 01341866  sub         eax,10h  
  112. 01341869  mov         dword ptr [ebp-8ACh],eax  
  113.                         INT D = U - 128;
  114. 0134186F  movzx       eax,byte ptr [ebp-879h]  
  115. 01341876  sub         eax,80h  
  116. 0134187B  mov         dword ptr [ebp-8B8h],eax  
  117.                         INT E = V - 128;
  118. 01341881  movzx       eax,byte ptr [ebp-891h]  
  119. 01341888  sub         eax,80h  
  120. 0134188D  mov         dword ptr [ebp-8C4h],eax  
  121.                         lpRGB32[k1 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
  122. 01341893  imul        eax,dword ptr [ebp-8ACh],12Ah  
  123. 0134189D  imul        ecx,dword ptr [ebp-8C4h],199h  
  124. 013418A7  lea         edx,[eax+ecx+80h]  
  125. 013418AE  sar         edx,8  
  126. 013418B1  push        edx  
  127. 013418B2  call        _Clip255 (01341069h)  
  128. 013418B7  add         esp,4  
  129. 013418BA  mov         ecx,dword ptr [ebp-858h]  
  130. 013418C0  mov         byte ptr [ebp+ecx-826h],al  
  131.                         lpRGB32[k1 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
  132. 013418C7  imul        eax,dword ptr [ebp-8ACh],12Ah  
  133. 013418D1  imul        ecx,dword ptr [ebp-8B8h],64h  
  134. 013418D8  sub         eax,ecx  
  135. 013418DA  imul        edx,dword ptr [ebp-8C4h],0D0h  
  136. 013418E4  sub         eax,edx  
  137. 013418E6  add         eax,80h  
  138. 013418EB  sar         eax,8  
  139. 013418EE  push        eax  
  140. 013418EF  call        _Clip255 (01341069h)  
  141. 013418F4  add         esp,4  
  142. 013418F7  mov         ecx,dword ptr [ebp-858h]  
  143. 013418FD  mov         byte ptr [ebp+ecx-827h],al  
  144.                         lpRGB32[k1 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B
  145. 01341904  imul        eax,dword ptr [ebp-8ACh],12Ah  
  146. 0134190E  imul        ecx,dword ptr [ebp-8B8h],204h  
  147. 01341918  lea         edx,[eax+ecx+80h]  
  148. 0134191F  sar         edx,8  
  149. 01341922  push        edx  
  150. 01341923  call        _Clip255 (01341069h)  
  151. 01341928  add         esp,4  
  152. 0134192B  mov         ecx,dword ptr [ebp-858h]  
  153. 01341931  mov         byte ptr lpRGB32[ecx],al  

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

  156.                         Y = Y1;
  157. 0134193F  mov         dword ptr [ebp-8A0h],eax  
  158.                         C = Y - 16;
  159. 01341945  mov         eax,dword ptr [ebp-8A0h]  
  160. 0134194B  sub         eax,10h  
  161. 0134194E  mov         dword ptr [ebp-8ACh],eax  
  162.                         D = U - 128;
  163. 01341954  movzx       eax,byte ptr [ebp-879h]  
  164. 0134195B  sub         eax,80h  
  165. 01341960  mov         dword ptr [ebp-8B8h],eax  
  166.                         E = V - 128;
  167. 01341966  movzx       eax,byte ptr [ebp-891h]  
  168. 0134196D  sub         eax,80h  
  169. 01341972  mov         dword ptr [ebp-8C4h],eax  
  170.                         lpRGB32[k2 + 2] = Clip255((298 * C + 409 * E + 128) >> 8);        // R
  171. 01341978  imul        eax,dword ptr [ebp-8ACh],12Ah  
  172. 01341982  imul        ecx,dword ptr [ebp-8C4h],199h  
  173. 0134198C  lea         edx,[eax+ecx+80h]  
  174. 01341993  sar         edx,8  
  175. 01341996  push        edx  
  176. 01341997  call        _Clip255 (01341069h)  
  177. 0134199C  add         esp,4  
  178. 0134199F  mov         ecx,dword ptr [ebp-864h]  
  179. 013419A5  mov         byte ptr [ebp+ecx-826h],al  
  180.                         lpRGB32[k2 + 1] = Clip255((298 * C - 100 * D - 208 * E + 128) >> 8);        // G
  181. 013419AC  imul        eax,dword ptr [ebp-8ACh],12Ah  
  182. 013419B6  imul        ecx,dword ptr [ebp-8B8h],64h  
  183. 013419BD  sub         eax,ecx  
  184. 013419BF  imul        edx,dword ptr [ebp-8C4h],0D0h  
  185. 013419C9  sub         eax,edx  
  186. 013419CB  add         eax,80h  
  187. 013419D0  sar         eax,8  
  188. 013419D3  push        eax  
  189. 013419D4  call        _Clip255 (01341069h)  
  190. 013419D9  add         esp,4  
  191. 013419DC  mov         ecx,dword ptr [ebp-864h]  
  192. 013419E2  mov         byte ptr [ebp+ecx-827h],al  
  193.                         lpRGB32[k2 + 0] = Clip255((298 * C + 516 * D + 128) >> 8);        // B
  194. 013419E9  imul        eax,dword ptr [ebp-8ACh],12Ah  
  195. 013419F3  imul        ecx,dword ptr [ebp-8B8h],204h  
  196. 013419FD  lea         edx,[eax+ecx+80h]  
  197. 01341A04  sar         edx,8  
  198. 01341A07  push        edx  
  199. 01341A08  call        _Clip255 (01341069h)  
  200. 01341A0D  add         esp,4  
  201. 01341A10  mov         ecx,dword ptr [ebp-864h]  
  202. 01341A16  mov         byte ptr lpRGB32[ecx],al  
  203.                 }
  204. 01341A1D  jmp         main+82h (01341742h)  
  205.         }
  206. 01341A22  jmp         main+42h (01341702h)  

  207.         return 0;
  208. 01341A27  xor         eax,eax  
  209. }
  210. 01341A29  push        edx  
  211. 01341A2A  mov         ecx,ebp  
  212. 01341A2C  push        eax  
  213. 01341A2D  lea         edx,ds:[1341A58h]  
  214. 01341A33  call        @_RTC_CheckStackVars@8 (01341249h)  
  215. 01341A38  pop         eax  
  216. 01341A39  pop         edx  
  217. 01341A3A  pop         edi  
  218. 01341A3B  pop         esi  
  219. 01341A3C  pop         ebx  
  220. 01341A3D  mov         ecx,dword ptr [ebp-4]  
  221. 01341A40  xor         ecx,ebp  
  222. 01341A42  call        @__security_check_cookie@4 (0134125Dh)  
  223. 01341A47  add         esp,0CA0h  
  224. 01341A4D  cmp         ebp,esp  
  225. 01341A4F  call        __RTC_CheckEsp (0134110Eh)  
  226. 01341A54  mov         esp,ebp  
  227. 01341A56  pop         ebp  
  228. 01341A57  ret  
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 18:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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