⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdctasm.asm

📁 vc++ mp3 源码下载 使用vc写的mp3 播放器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        fstp   dword [tab_b+p*4]       ;/* b8p bp */
        fsubp  st1,st0                 ;/* bp-b8p */
        fstp   dword [tab_b+(p+5)*4]   ;/* - */
%assign p p+1
%endrep

%assign p 4
        ;/* Last - finalize array */
        fld    dword [_mdct18w+p*4]    ;/* w[p] */
        fmul   dword [ebp+p*4]         ;/* g1 */
        fld    dword [_mdct18w+(17-p)*4] ;/* w[17-p] g1 */
        fmul   dword [ebp+(17-p)*4]    ;/* g2 g1 */
        fld    st0                     ;/* g2 g2 g1 */
        fadd   st2                     ;/* ap g2 g1 */
        fstp   dword [tab_a+p*4]       ;/* g2 g1 */
        fsubp  st1,st0                 ;/* g1-g2 */
        fmul   dword [_mdct18w2+p*4]   ;/* bp */
        fstp   dword [tab_b+p*4]       ;/* - */

;/* Now the huge and boring part */
;//   f[0] = 0.5f * (a[0] + a[1] + a[2] + a[3] + a[4]);
;// TO DO : avoid reload of a[4] and b[4]
        fld    dword [tab_a+0*4]       ;/* a[0] */
        fadd   dword [tab_a+1*4]       ;/* a[0]+a[1] */
        fadd   dword [tab_a+2*4]       ;/* a[0]+a[1]+a[2] */
        fadd   dword [tab_a+3*4]       ;/* a[0]+a[1]+a[2]+a[3] */
        fadd   dword [tab_a+4*4]       ;/* a[0]+a[1]+a[2]+a[3]+a[4] */
        fmul   dword [My_FPU_Half]       ;/* 0.5*(a[0]+a[1]+a[2]+a[3]+a[4]) */
        fst    dword [ebp+0*4]         ;/* f[0] */
;//   f[1] = 0.5f * (b[0] + b[1] + b[2] + b[3] + b[4]);
        fld    dword [tab_b+0*4]       ;/* b[0] f[0] */
        fadd   dword [tab_b+1*4]       ;/* b[0]+b[1] f[0] */
        fadd   dword [tab_b+2*4]       ;/* b[0]+b[1]+b[2] f[0] */
        fadd   dword [tab_b+3*4]       ;/* b[0]+b[1]+b[2]+b[3] f[0] */
        fadd   dword [tab_b+4*4]       ;/* b[0]+b[1]+b[2]+b[3]+b[4] f[0] */
        fmul   dword [My_FPU_Half]       ;/* f[1]' f[0] */
;//   f[2] = coef[1][0]*a[5]+coef[1][1]*a[6]+coef[1][2]*a[7]+coef[1][3]*a[8];
        fld    dword [_coef+1*16+0*4]  ;/* coef[1][0]  f[1]' f[0] */
        fld    dword [_coef+1*16+1*4]  ;/* coef[1][1]  coef[1][0] f[1]' f[0] */
        fld    dword [_coef+1*16+2*4]  ;/* coef[1][2]  coef[1][1] coef[1][0] f[1]' f[0] */
        fld    dword [_coef+1*16+3*4]  ;/* coef[1][3]  coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fld    st3                     ;/* coef[1][0]  coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fmul   dword [tab_a+5*4]       ;/* v0          coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fld    st3                     ;/* coef[1][1]  v0         coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fmul   dword [tab_a+6*4]       ;/* v1          v0         coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        faddp  st1,st0                 ;/* v1+v0       coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fld    st2                     ;/* coef[1][2]  v1+v0      coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fmul   dword [tab_a+7*4]       ;/* v2 v1+v0    coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        faddp  st1,st0                 ;/* v2+v1+v0    coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fld    st1                     ;/* coef[1][3]  v2+v1+v0   coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        fmul   dword [tab_a+8*4]       ;/* v3 v2+v1+v0 coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
        faddp  st1,st0                 ;/* f[2]'       coef[1][3] coef[1][2] coef[1][1] coef[1][0] f[1]' f[0] */
;//   f[3] = coef[1][0]*b[5]+coef[1][1]*b[6]+coef[1][2]*b[7]+coef[1][3]*b[8]-f[1];
        fxch   st4                     ;/* coef[1][0]  coef[1][3] coef[1][2] coef[1][1] f[2]'      f[1]' f[0] */
        fmul   dword [tab_b+5*4]       ;/* v0          coef[1][3] coef[1][2] coef[1][1] f[2]'      f[1]' f[0] */
        fxch   st3                     ;/* coef[1][1]  coef[1][3] coef[1][2] v0         f[2]'      f[1]' f[0] */
        fmul   dword [tab_b+6*4]       ;/* v1          coef[1][3] coef[1][2] v0         f[2]'      f[1]' f[0] */
        faddp  st3,st0                 ;/* coef[1][3]  coef[1][2] v0+v1      f[2]'      f[1]' f[0] */
        fxch   st1                     ;/* coef[1][2]  coef[1][3] v0+v1      f[2]'      f[1]' f[0] */
        fmul   dword [tab_b+7*4]       ;/* v2          coef[1][3] v0+v1      f[2]'      f[1]' f[0] */
        faddp  st2,st0                 ;/* coef[1][3]  v0+v1+v2   f[2]'      f[1]' f[0] */
        fmul   dword [tab_b+8*4]       ;/* v3          v0+v1+v2   f[2]'      f[1]' f[0] */
        faddp  st1,st0                 ;/* v0+v1+v2+v3 f[2]'      f[1]' f[0] */
        fsub   st0,st2                 ;/* f[3]'       f[2]'      f[1]' f[0] */
;//   f[1] = f[1] - f[0];
        fxch   st3                     ;/* f[0]        f[2]'      f[1]' f[3]' */
        fsubp  st2,st0                 ;/* f[2]'       f[1]       f[3]' */
        fxch   st1                     ;/* f[1]        f[2]'      f[3]' */
        fst    dword [ebp+1*4]         ;/* f[1]        f[2]'      f[3]' */
;//   f[2] = f[2] - f[1];
        fsubp  st1,st0                 ;/* f[2]        f[3]' */
        fst    dword [ebp+2*4]         ;/* f[2]        f[3]' */
        fxch   st1                     ;/* f[3]'       f[2] */
;//   f[4]=coef[2][0]*a[0]+coef[2][1]*a[1]+coef[2][2]*a[2]+coef[2][3]*a[3]-a[4];
        fld    dword [_coef+2*16+0*4]  ;/* c[2,0] f[3]' f[2] */
        fld    dword [_coef+2*16+1*4]  ;/* c[2,1] c[2,0] f[3]' f[2] */
        fld    dword [_coef+2*16+2*4]  ;/* c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fld    dword [_coef+2*16+3*4]  ;/* c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fld    st3                     ;/* c[2,0] c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fmul   dword [tab_a+0*4]       ;/* v0     c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fld    st3                     ;/* c[2,1] v0     c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fmul   dword [tab_a+1*4]       ;/* v1     v0     c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        faddp  st1,st0                 ;/* v1+v0  c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fld    st2                     ;/* c[2,2] v1+v0  c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fmul   dword [tab_a+2*4]       ;/* v2     v1+v0  c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        faddp  st1,st0                 ;/* v0v1v2 c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fld    st1                     ;/* c[2,3] v0v1v2 c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fmul   dword [tab_a+3*4]       ;/* v3     v0v1v2 c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        faddp  st1,st0                 ;/* f[4]'  c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fsub   dword [tab_a+4*4]       ;/* f[4]'  c[2,3] c[2,2] c[2,1] c[2,0] f[3]' f[2] */
        fxch   st4                     ;/* c[2,0] c[2,3] c[2,2] c[2,1] f[4]'  f[3]' f[2] */
;//   f[5]=coef[2][0]*b[0]+coef[2][1]*b[1]+coef[2][2]*b[2]+coef[2][3]*b[3]-b[4]-f[3];
        fmul   dword [tab_b+0*4]       ;/* v0     c[2,3] c[2,2] c[2,1] f[4]'  f[3]' f[2] */
        fxch   st3                     ;/* c[2,1] c[2,3] c[2,2] v0     f[4]'  f[3]' f[2] */
        fmul   dword [tab_b+1*4]       ;/* v1     c[2,3] c[2,2] v0     f[4]'  f[3]' f[2] */
        faddp  st3,st0                 ;/* c[2,3] c[2,2] v0+v1  f[4]'  f[3]' f[2] */
        fxch   st1                     ;/* c[2,2] c[2,3] v0+v1  f[4]'  f[3]' f[2] */
        fmul   dword [tab_b+2*4]       ;/* v2     c[2,3] v0+v1  f[4]'  f[3]' f[2] */
        faddp  st2,st0                 ;/* c[2,3] v0v1v2 f[4]'  f[3]' f[2] */
        fmul   dword [tab_b+3*4]       ;/* v3     v0v1v2 f[4]'  f[3]' f[2] */
        faddp  st1,st0                 ;/* f[5]'' f[4]'  f[3]' f[2] */
        fsub   dword [tab_b+4*4]       ;/* f[5]'' f[4]'  f[3]' f[2] */
        fsub   st2                     ;/* f[5]'  f[4]'  f[3]' f[2] */
;//   f[3] = f[3] - f[2];
        fxch   st3                     ;/* f[2]   f[4]'  f[3]' f[5]' */
        fsubp  st2,st0                 ;/* f[4]'  f[3]   f[5]' */
        fxch   st1                     ;/* f[3]   f[4]'  f[5]' */
        fst    dword [ebp+3*4]         ;/* f[3]   f[4]'  f[5]' */
;//   f[4] = f[4] - f[3];
        fsubp  st1,st0                 ;/* f[4]   f[5]' */
        fst    dword [ebp+4*4]         ;/* f[4]   f[5]' */
        fxch   st1                     ;/* f[5]'  f[4] */
;//   f[6] = coef[3][0] * (a[5] - a[7] - a[8]);
        fld    dword [tab_a+5*4]       ;/* a[5] f[5]' f[4] */
        fsub   dword [tab_a+7*4]       ;/* a[5]-a[7] f[5]' f[4] */
        fsub   dword [tab_a+8*4]       ;/* a[5]-a[7]-a[8] f[5]' f[4] */
        fmul   dword [_coef+3*16+0*4]  ;/* f[6]' f[5]' f[4] */
;//   f[7] = coef[3][0] * (b[5] - b[7] - b[8]) - f[5];
        fld    dword [tab_b+5*4]       ;/* b[5] f[6]' f[5]' f[4] */
        fsub   dword [tab_b+7*4]       ;/* b[5]-b[7] f[6]' f[5]' f[4] */
        fsub   dword [tab_b+8*4]       ;/* b[5]-b[7]-b[8] f[6]' f[5]' f[4] */
        fmul   dword [_coef+3*16+0*4]  ;/* c[3,0]*(b5-b7-b8) f[6]' f[5]' f[4] */
        fsub   st2                     ;/* f[7]' f[6]' f[5]' f[4] */
;//   f[5] = f[5] - f[4];
        fxch   st3                     ;/* f[4] f[6]' f[5]' f[7]' */
        fsubp  st2,st0                 ;/* f[6]' f[5] f[7]' */
        fxch   st1                     ;/* f[5] f[6]' f[7]' */
        fst    dword [ebp+5*4]         ;/* f[5] f[6]' f[7]' */
;//   f[6] = f[6] - f[5];
        fsubp  st1,st0                 ;/* f[6] f[7]' */
        fst    dword [ebp+6*4]         ;/* f[6] f[7]' */
        fxch   st1                     ;/* f[7]' f[6] */
;//   f[8] = coef[4][0]*a[0]+coef[4][1]*a[1]+coef[4][2]*a[2]+coef[4][3]*a[3]+a[4];
        fld    dword [_coef+4*16+0*4]  ;/* c[4,0] f[7]' f[6] */
        fld    dword [_coef+4*16+1*4]  ;/* c[4,1] c[4,0] f[7]' f[6] */
        fld    dword [_coef+4*16+2*4]  ;/* c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fld    dword [_coef+4*16+3*4]  ;/* c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fld    st3                     ;/* c[4,0] c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fmul   dword [tab_a+0*4]       ;/* v0     c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fld    st3                     ;/* c[4,1] v0     c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fmul   dword [tab_a+1*4]       ;/* v1     v0     c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        faddp  st1,st0                 ;/* v1+v0  c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fld    st2                     ;/* c[4,2] v1+v0  c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fmul   dword [tab_a+2*4]       ;/* v2     v1+v0  c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        faddp  st1,st0                 ;/* v0v1v2 c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fld    st1                     ;/* c[4,3] v0v1v2 c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fmul   dword [tab_a+3*4]       ;/* v3     v0v1v2 c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        faddp  st1,st0                 ;/* f[8]'  c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */
        fadd   dword [tab_a+4*4]       ;/* f[8]'  c[4,3] c[4,2] c[4,1] c[4,0] f[7]' f[6] */        ;// CHECK HERE
        fxch   st4                     ;/* c[4,0] c[4,3] c[4,2] c[4,1] f[8]'  f[7]' f[6] */
;//   f[9] = coef[4][0]*b[0]+coef[4][1]*b[1]+coef[4][2]*b[2]+coef[4][3]*b[3]+b[4]-f[7];
        fmul   dword [tab_b+0*4]       ;/* v0     c[4,3] c[4,2] c[4,1] f[8]'  f[7]' f[6] */
        fxch   st3                     ;/* c[4,1] c[4,3] c[4,2] v0     f[8]'  f[7]' f[6] */
        fmul   dword [tab_b+1*4]       ;/* v1     c[4,3] c[4,2] v0     f[8]'  f[7]' f[6] */
        faddp  st3,st0                 ;/* c[4,3] c[4,2] v0+v1  f[8]'  f[7]' f[6] */
        fxch   st1                     ;/* c[4,2] c[4,3] v0+v1  f[8]'  f[7]' f[6] */
        fmul   dword [tab_b+2*4]       ;/* v2     c[4,3] v0+v1  f[8]'  f[7]' f[6] */
        faddp  st2,st0                 ;/* c[4,3] v0v1v2 f[8]'  f[7]' f[6] */
        fmul   dword [tab_b+3*4]       ;/* v3     v0v1v2 f[8]'  f[7]' f[6] */
        faddp  st1,st0                 ;/* f[9]'' f[8]'  f[7]' f[6] */
        fadd   dword [tab_b+4*4]       ;/* f[9]'' f[8]'  f[7]' f[6] */  ;// CHECK HERE
        fsub   st2                     ;/* f[9]'  f[8]'  f[7]' f[6] */
;//   f[7] = f[7] - f[6];
        fxch   st3                     ;/* f[6]   f[8]'  f[7]' f[9]' */
        fsubp  st2,st0                 ;/* f[8]'  f[7]   f[9]' */
        fxch   st1                     ;/* f[7]   f[8]'  f[9]' */
        fst    dword [ebp+7*4]         ;/* f[7]   f[8]'  f[9]' */
;//   f[8] = f[8] - f[7];
        fsubp  st1,st0                 ;/* f[8]   f[9]' */
        fst    dword [ebp+8*4]         ;/* f[8]   f[9]' */
        fxch   st1                     ;/* f[9]'  f[8] */
;//   f[10] = coef[5][0]*a[5]+coef[5][1]*a[6]+coef[5][2]*a[7]+coef[5][3]*a[8];
        fld    dword [_coef+5*16+0*4]  ;/* coef[5][0]  f[9]' f[8] */
        fld    dword [_coef+5*16+1*4]  ;/* coef[5][1]  coef[5][0] f[9]' f[8] */
        fld    dword [_coef+5*16+2*4]  ;/* coef[5][2]  coef[5][1] coef[5][0] f[9]' f[8] */
        fld    dword [_coef+5*16+3*4]  ;/* coef[5][3]  coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fld    st3                     ;/* coef[5][0]  coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fmul   dword [tab_a+5*4]       ;/* v0          coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fld    st3                     ;/* coef[5][1]  v0         coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fmul   dword [tab_a+6*4]       ;/* v1          v0         coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        faddp  st1,st0                 ;/* v1+v0       coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fld    st2                     ;/* coef[5][2]  v1+v0      coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fmul   dword [tab_a+7*4]       ;/* v2 v1+v0    coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        faddp  st1,st0                 ;/* v2+v1+v0    coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fld    st1                     ;/* coef[5][3]  v2+v1+v0   coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        fmul   dword [tab_a+8*4]       ;/* v3 v2+v1+v0 coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
        faddp  st1,st0                 ;/* f[10]'      coef[5][3] coef[5][2] coef[5][1] coef[5][0] f[9]' f[8] */
;//   f[11] = coef[5][0]*b[5]+coef[5][1]*b[6]+coef[5][2]*b[7]+coef[5][3]*b[8]-f[9];
        fxch   st4                     ;/* coef[5][0]  coef[5][3] coef[5][2] coef[5][1] f[10]'     f[9]' f[8] */
        fmul   dword [tab_b+5*4]       ;/* v0          coef[5][3] coef[5][2] coef[5][1] f[10]'     f[9]' f[8] */
        fxch   st3                     ;/* coef[5][1]  coef[5][3] coef[5][2] v0         f[10]'     f[9]' f[8] */
        fmul   dword [tab_b+6*4]       ;/* v1          coef[5][3] coef[5][2] v0         f[10]'     f[9]' f[8] */
        faddp  st3,st0                 ;/* coef[5][3]  coef[5][2] v0+v1      f[10]'     f[9]' f[8] */
        fxch   st1                     ;/* coef[5][2]  coef[5][3] v0+v1      f[10]'     f[9]' f[8] */
        fmul   dword [tab_b+7*4]       ;/* v2          coef[5][3] v0+v1      f[10]'     f[9]' f[8] */
        faddp  st2,st0                 ;/* coef[5][3]  v0+v1+v2   f[10]'     f[9]' f[8] */
        fmul   dword [tab_b+8*4]       ;/* v3          v0+v1+v2   f[10]'     f[9]' f[8] */
        faddp  st1,st0                 ;/* v0+v1+v2+v3 f[10]'     f[9]' f[8] */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -