📄 mdctasm.asm
字号:
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 + -