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

📄 mpegimdf.a

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 A
📖 第 1 页 / 共 3 页
字号:
; Get input *3 samples; GET_I3 <num>,<reg>GET_I3         MACRO               MOVM     \1*3*SSIZE(a0),\2               ENDM;DCT12_PART1    MACRO               GET_I3   5,fp5    ; in5 = in[5*3]               GET_I3   4,fp4               ADDR     fp4,fp5  ; in5 += (in4 = in[4*3])               GET_I3   3,fp3               ADDR     fp3,fp4  ; in4 += (in3 = in[3*3])               GET_I3   2,fp2               ADDR     fp2,fp3  ; in3 += (in2 = in[2*3])               GET_I3   1,fp1               ADDR     fp1,fp2  ; in2 += (in1 = in[1*3])               GET_I3   0,fp0               ADDR     fp0,fp1  ; in1 += (in0 = in[0*3])               ADDR     fp3,fp5  ; in5 += in3               ADDR     fp1,fp3  ; in3 += in1               MULI     8.660254038e-1,fp2 ; COS_MULT( in2, COS6_1 )               MULI     8.660254038e-1,fp3 ; COS_MULT( in3, COS6_1 )               ENDM;DCT12_PART2    MACRO               MULI     5e-1,fp4  ; in0 += COS_MULT( in4, COS6_2 )               ADDR     fp4,fp0               MOVR     fp0,fp4  ; in4 = in0 + in2               ADDR     fp2,fp4               SUBR     fp2,fp0  ; in0 -= in2               MULI     5e-1,fp5  ; in1 += COS_MULT( in5, COS6_2 )               ADDR     fp5,fp1               MOVR     fp1,fp5  ; in5 = T12_MULT( (in1 + in3), 0 )               ADDR     fp3,fp5               MULI     5.176380902e-1,fp5               SUBR     fp3,fp1  ; in1 = T12_MULT( (in1 - in3), 2 )               MULI     1.931851653,fp1               MOVR     fp4,fp3  ; in3 = in4 + in5               ADDR     fp5,fp3               SUBR     fp5,fp4  ; in4 -= in5               MOVR     fp0,fp2  ; in2 = in0 + in1               ADDR     fp1,fp2               SUBR     fp1,fp0  ; in0 -= in1               ENDM; Multiply <reg> by window coeff; MUL_WIN <i>,<reg>;MUL_WIN        MACRO               MULM     \1*WSIZE(a2),\2               ENDM; Add a <reg> with an out block; ADD_OUT <i>,<reg>;ADD_OUT        MACRO               ADDM     32*DSIZE*\1(a1),\2               MOVM     \2,32*DSIZE*\1(a1)               ENDM; Add a <reg> with a prev block; ADD_PREV <i>,<reg>;ADD_PREV       MACRO               ADDM     \1*DSIZE(a3),\2               MOVM     \2,\1*DSIZE(a3)               ENDM; Calculate: tmp0 (fp6)  & tmp1 (fp7);CALC_TEMP      MACRO               MOVR     fp0,fp7 ; tmp1 = fp7 = (in0 - in4)               SUBR     fp4,fp7               MOVR     fp1,fp6 ; fp6 = tmp2 = T12_MULT( (in1 - in5), 1 )               SUBR     fp5,fp6               MULI     7.071067812e-1,fp6               SUBR     fp6,fp7 ; fp7 = tmp1 = tmp1 - tmp2               ADDR     fp0,fp6 ; fp6 = tmp0 = (in0 - in4) + tmp2               SUBR     fp4,fp6               MOVM     fp6,0(a5) ; tmp0 *** CAN BE SAVED IN A D REG               ENDM;;              IMDCT for Short blocks;;              a0: input  array   (float *);              a1: output out     (float *);              a2: window array   (float *);              a3: prev block     (float *)imdct_s               link     a6,#-2*4    ; need 2 floats               lea      -2*4(a6),a5 ; tmp0..tmp1               ; STEP 1               ; i=0..5: ts[SBLIMIT*i] = prev[i]               ;               move.l   a3,a4      ; a4 = prev block               move.l   (a4)+,32*DSIZE*0(a1)               move.l   (a4)+,32*DSIZE*1(a1)               move.l   (a4)+,32*DSIZE*2(a1)               move.l   (a4)+,32*DSIZE*3(a1)               move.l   (a4)+,32*DSIZE*4(a1)               move.l   (a4),32*DSIZE*5(a1)               ;               DCT12_PART1               ;               CALC_TEMP               ;               MUL_WIN  10,fp6 ; ts[(17-1)*SBLIMIT] = prev[17-1] + WIN_MULT( tmp0, 11-1 )               ADD_PREV 16,fp6               SET_OUT  16,fp6               MOVM     0(a5),fp6 ; ts[(12+1)*SBLIMIT] = prev[12+1] + WIN_MULT( tmp0, 6+1 )               MUL_WIN  7,fp6               ADD_PREV 13,fp6               SET_OUT  13,fp6               MOVR     fp7,fp6 ; ts[(6 +1)*SBLIMIT] = prev[6 +1] + WIN_MULT( tmp1, 1 )               MUL_WIN  1,fp6               ADD_PREV 7,fp6               SET_OUT  7,fp6               MUL_WIN  4,fp7 ; ts[(11-1)*SBLIMIT] = prev[11-1] + WIN_MULT( tmp1, 5-1 )               ADD_PREV 10,fp7               SET_OUT  10,fp7               ;               DCT12_PART2               ;               MOVR     fp2,fp7 ; ts[(17-0)*SBLIMIT] = prev[17-0] + WIN_MULT( in2, 11-0 )               MUL_WIN  11,fp7               ADD_PREV 17,fp7               SET_OUT  17,fp7               MUL_WIN  6,fp2 ; ts[(12+0)*SBLIMIT] = prev[12+0] + WIN_MULT( in2, 6+0 )               ADD_PREV 12,fp2               SET_OUT  12,fp2               MOVR     fp3,fp7 ; ts[(12+2)*SBLIMIT] = prev[12+2] + WIN_MULT( in3, 6+2 )               MUL_WIN  8,fp7               ADD_PREV 14,fp7               SET_OUT  14,fp7               MUL_WIN  9,fp3 ; ts[(17-2)*SBLIMIT] = prev[17-2] + WIN_MULT( in3, 11-2 )               ADD_PREV 15,fp3               SET_OUT  15,fp3               MOVR     fp0,fp7 ; ts[(6+0)*SBLIMIT]  = prev[6+0]  + WIN_MULT( in0, 0 )               MUL_WIN  0,fp7               ADD_PREV 6,fp7               SET_OUT  6,fp7               MUL_WIN  5,fp0 ; ts[(11-0)*SBLIMIT] = prev[11-0] + WIN_MULT( in0, 5-0 )               ADD_PREV 11,fp0               SET_OUT  11,fp0               MOVR     fp4,fp7 ; ts[(6+2)*SBLIMIT]  = prev[6+2]  + WIN_MULT( in4, 2 )               MUL_WIN  2,fp7               ADD_PREV 8,fp7               SET_OUT  8,fp7               MUL_WIN  3,fp4 ; ts[(11-2)*SBLIMIT] = prev[11-2] + WIN_MULT( in4, 5-2 )               ADD_PREV 9,fp4               SET_OUT  9,fp4               ; STEP 2               ;               addq.l   #SSIZE,a0 ; in++               ;               DCT12_PART1               ;               CALC_TEMP               ;               MUL_WIN  10,fp6 ; prev[5-1] = WIN_MULT( tmp0, 11-1 )               SET_PREV 4,fp6               MOVM     0(a5),fp6 ; prev[0+1] = WIN_MULT( tmp0, 6+1 )               MUL_WIN  7,fp6               SET_PREV 1,fp6               MOVR     fp7,fp6 ; ts[(12+1)*SBLIMIT] += WIN_MULT( tmp1, 1 )               MUL_WIN  1,fp6               ADD_OUT  13,fp6               MUL_WIN  4,fp7 ; ts[(17-1)*SBLIMIT] += WIN_MULT( tmp1, 5-1 )               ADD_OUT  16,fp7               ;               DCT12_PART2               ;               MOVR     fp2,fp7 ; prev[5-0] = WIN_MULT( in2, 11-0 )               MUL_WIN  11,fp7               SET_PREV 5,fp7               MUL_WIN  6,fp2 ; prev[0+0] = WIN_MULT( in2, 6+0 )               SET_PREV 0,fp2               MOVR     fp3,fp7 ; prev[0+2] = WIN_MULT( in3, 6+2 )               MUL_WIN  8,fp7               SET_PREV 2,fp7               MUL_WIN  9,fp3 ; prev[5-2] = WIN_MULT( in3, 11-2 )               SET_PREV 3,fp3               MOVR     fp0,fp7 ; ts[(12+0)*SBLIMIT] += WIN_MULT( in0, 0 )               MUL_WIN  0,fp7               ADD_OUT  12,fp7               MUL_WIN  5,fp0 ; ts[(17-0)*SBLIMIT] += WIN_MULT( in0, 5-0 )               ADD_OUT  17,fp0               MOVR     fp4,fp7 ; ts[(12+2)*SBLIMIT] += WIN_MULT( in4, 2 )               MUL_WIN  2,fp7               ADD_OUT  14,fp7               MUL_WIN  3,fp4 ; ts[(17-2)*SBLIMIT] += WIN_MULT( in4, 5-2 )               ADD_OUT  15,fp4               ; STEP 3               ;               addq.l   #SSIZE,a0 ; in++               ;               ; prev[12]=prev[13]=prev[14]=prev[15]=prev[16]=prev[17]=0               lea      12*DSIZE(a3),a4 ; a4 = &prev[12]               moveq.l  #0,d0               move.l   d0,(a4)+               move.l   d0,(a4)+               move.l   d0,(a4)+               move.l   d0,(a4)+               move.l   d0,(a4)+               move.l   d0,(a4)               ;               DCT12_PART1               ;               CALC_TEMP               ;               MUL_WIN  10,fp6 ; prev[11-1] = WIN_MULT( tmp0, 11-1 )               SET_PREV 10,fp6               MOVM     0(a5),fp6 ; prev[6+1] = WIN_MULT( tmp0, 6+1 )               MUL_WIN  7,fp6               SET_PREV 7,fp6               MOVR     fp7,fp6 ; prev[0+1] += WIN_MULT( tmp1, 1 )               MUL_WIN  1,fp6               ADD_PREV 1,fp6               MUL_WIN  4,fp7 ; prev[5-1] += WIN_MULT( tmp1, 5-1 )               ADD_PREV 4,fp7               ;               DCT12_PART2               ;               MOVR     fp2,fp7 ; prev[11-0] = WIN_MULT( in2, 11-0 )               MUL_WIN  11,fp7               SET_PREV 11,fp7               MUL_WIN  6,fp2 ; prev[6+0] = WIN_MULT( in2, 6+0 )               SET_PREV 6,fp2               MOVR     fp3,fp7 ; prev[6+2] = WIN_MULT( in3, 6+2 )               MUL_WIN  8,fp7               SET_PREV 8,fp7               MUL_WIN  9,fp3 ; prev[11-2] = WIN_MULT( in3, 11-2 )               SET_PREV 9,fp3               MOVR     fp0,fp7 ; prev[0+0] += WIN_MULT( in0, 0 )               MUL_WIN  0,fp7               ADD_PREV 0,fp7               MUL_WIN  5,fp0 ; prev[5-0] += WIN_MULT( in0, 5-0 )               ADD_PREV 5,fp0               MOVR     fp4,fp7 ; prev[0+2] += WIN_MULT( in4, 2 )               MUL_WIN  2,fp7               ADD_PREV 2,fp7               MUL_WIN  3,fp4 ; prev[5-2] += WIN_MULT( in4, 5-2 )               ADD_PREV 3,fp4               subq.l   #2*SSIZE,a0 ; restore in               unlk     a6               rtsimdct_e_win0               dc.s    3.22824270e-2,1.07206352e-1,2.01414257e-1,3.25616330e-1,   5.00000000e-1,7.67774701e-1               dc.s    1.24122286,2.33195114,7.74415016,-8.45125675,-3.03905797,-1.94832957               dc.s    -1.47488141,-1.20710671,-1.03272307,-9.08520997e-1,-8.14313114e-1,-7.39389181e-1               dc.s    -6.77525342e-1,-6.24844432e-1,-5.78791738e-1,-5.37601590e-1,-4.99999970e-1,-4.65028346e-1               dc.s    -4.31934267e-1,-4.00099576e-1,-3.68989855e-1,-3.38116914e-1,-3.07007194e-1,-2.75172472e-1               dc.s    -2.42078424e-1,-2.07106769e-1,-1.69505134e-1,-1.28315032e-1,-8.22623298e-2,-2.95813959e-2imdct_e_win1               dc.s    3.22824270e-2,1.07206352e-1,2.01414257e-1,3.25616330e-1,   5.00000000e-1,7.67774701e-1               dc.s    1.24122286,2.33195114,7.74415016,-8.45125675,-3.03905797,-1.94832957               dc.s    -1.47488141,-1.20710671,-1.03272307,-9.08520997e-1,-8.14313114e-1,-7.39389181e-1               dc.s    -6.78170800e-1,-6.30236149e-1,-5.92844486e-1,-5.63690960e-1,-5.41196048e-1,-5.24264514e-1               dc.s    -5.07758319e-1,-4.65925813e-1,-3.97054553e-1,-3.04670691e-1,-1.92992792e-1,-6.68476522e-2               dc.s       0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000imdct_e_win2               dc.s    1.07206352e-1,   5.00000000e-1,2.33195114,-3.03905797,-1.20710671,-8.14313114e-1               dc.s    -6.24844432e-1,-4.99999970e-1,-4.00099576e-1,-3.07007194e-1,-2.07106769e-1,-8.22623298e-2imdct_e_win3               dc.s       0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000               dc.s    3.01530272e-1,1.46592581,6.97810602,-9.09404469,-3.53905797,-2.29034972               dc.s    -1.66275465,-1.30656290,-1.08284020,-9.30579484e-1,-8.21339786e-1,-7.40093589e-1               dc.s    -6.77525342e-1,-6.24844432e-1,-5.78791738e-1,-5.37601590e-1,-4.99999970e-1,-4.65028346e-1               dc.s    -4.31934267e-1,-4.00099576e-1,-3.68989855e-1,-3.38116914e-1,-3.07007194e-1,-2.75172472e-1               dc.s    -2.42078424e-1,-2.07106769e-1,-1.69505134e-1,-1.28315032e-1,-8.22623298e-2,-2.95813959e-2imdct_o_win0               dc.s    3.22824270e-2,-1.07206352e-1,2.01414257e-1,-3.25616330e-1,   5.00000000e-1,-7.67774701e-1               dc.s    1.24122286,-2.33195114,7.74415016,8.45125675,-3.03905797,1.94832957               dc.s    -1.47488141,1.20710671,-1.03272307,9.08520997e-1,-8.14313114e-1,7.39389181e-1               dc.s    -6.77525342e-1,6.24844432e-1,-5.78791738e-1,5.37601590e-1,-4.99999970e-1,4.65028346e-1               dc.s    -4.31934267e-1,4.00099576e-1,-3.68989855e-1,3.38116914e-1,-3.07007194e-1,2.75172472e-1               dc.s    -2.42078424e-1,2.07106769e-1,-1.69505134e-1,1.28315032e-1,-8.22623298e-2,2.95813959e-2imdct_o_win1               dc.s    3.22824270e-2,-1.07206352e-1,2.01414257e-1,-3.25616330e-1,   5.00000000e-1,-7.67774701e-1               dc.s    1.24122286,-2.33195114,7.74415016,8.45125675,-3.03905797,1.94832957               dc.s    -1.47488141,1.20710671,-1.03272307,9.08520997e-1,-8.14313114e-1,7.39389181e-1               dc.s    -6.78170800e-1,6.30236149e-1,-5.92844486e-1,5.63690960e-1,-5.41196048e-1,5.24264514e-1               dc.s    -5.07758319e-1,4.65925813e-1,-3.97054553e-1,3.04670691e-1,-1.92992792e-1,6.68476522e-2               dc.s       0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000imdct_o_win2               dc.s    1.07206352e-1,  -5.00000000e-1,2.33195114,3.03905797,-1.20710671,8.14313114e-1               dc.s    -6.24844432e-1,4.99999970e-1,-4.00099576e-1,3.07007194e-1,-2.07106769e-1,8.22623298e-2imdct_o_win3               dc.s       0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000,   0.00000000               dc.s    3.01530272e-1,-1.46592581,6.97810602,9.09404469,-3.53905797,2.29034972               dc.s    -1.66275465,1.30656290,-1.08284020,9.30579484e-1,-8.21339786e-1,7.40093589e-1               dc.s    -6.77525342e-1,6.24844432e-1,-5.78791738e-1,5.37601590e-1,-4.99999970e-1,4.65028346e-1               dc.s    -4.31934267e-1,4.00099576e-1,-3.68989855e-1,3.38116914e-1,-3.07007194e-1,2.75172472e-1               dc.s    -2.42078424e-1,2.07106769e-1,-1.69505134e-1,1.28315032e-1,-8.22623298e-2,2.95813959e-2imdct_e_win    dc.l     imdct_e_win0               dc.l     imdct_e_win1               dc.l     imdct_e_win2               dc.l     imdct_e_win3imdct_o_win    dc.l     imdct_o_win0               dc.l     imdct_o_win1               dc.l     imdct_o_win2               dc.l     imdct_o_win3               END

⌨️ 快捷键说明

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