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

📄 mpegimda.a

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 A
📖 第 1 页 / 共 3 页
字号:
;              W33   <reg>, oi, wi   -> <reg> * win[ wi ] + out[ oi*32 ] -> out[ oi*32 ];              performs: (<reg> * win[ wi ]) >> WIN_BITS + out[ oi*32 ] -> out[ oi*32 ];W33            MACRO               muls.w   \3*2(a2),\1               asr.l    d6,\1               add.w    \1,\2*2*32(a1)               ENDM;              W34   <reg>, oi, wi   -> <reg> * win[ wi ] -> prev[ oi ];              performs: (<reg> * win[ wi ]) >> WIN_BITS -> prev[ oi ];W34            MACRO               muls.w   \3*2(a2),\1               asr.l    d6,\1               move.w   \1,\2*2(a5)               ENDM;              W35   <reg>, oi, wi   -> <reg> * win[ wi ] + prev[ oi ] -> prev[ oi ];              performs: (<reg> * win[ wi ]) >> WIN_BITS + prev[ oi ] -> prev[ oi ];W35            MACRO               muls.w   \3*2(a2),\1               asr.l    d6,\1               add.w    \1,\2*2(a5)               ENDM;;              IMDCT for Short blocks;;              a0: input  x array (16-bit);              a1: output out     (16-bit);              a2: window array   (16-bit);              a3: prev array     (32-bit)imdct_s;   move.w #$F00,$DFF180               link     a6,#-4*4    ; need 2+2 longs               move.l   a3,a5               lea      -2*4(a6),a3   ; t needs 2 longs               lea      -2*4(a3),a4   ; s needs 2 longs;               lea      imdct_sum_t,a3;               lea      imdct_sum_s,a4               moveq.l  #IMDCT_BITS,d6               ; STEP 1               ; O( 0..5 ) = prev[ 0.. 5 ]               move.w   0*2(a5),0*2*32(a1)               move.w   1*2(a5),1*2*32(a1)               move.w   2*2(a5),2*2*32(a1)               move.w   3*2(a5),3*2*32(a1)               move.w   4*2(a5),4*2*32(a1)               move.w   5*2(a5),5*2*32(a1)               ; Calc s[0..1],  t[0..1]               ;               M3       1,K1,d3               M3_ADD   4,K4               move.l   d3,0*4(a4) ; s[ 0 ] = M3( 1, K1 ) + M3( 4, K4 )               M3       1,K4,d3               M3_SUB   4,K1               move.l   d3,1*4(a4) ; s[ 1 ] = M3( 1, K4 ) - M3( 4, K1 )               move.w   0*6(a0),d3               sub.w    3*6(a0),d3               ext.l    d3               move.l   d3,0*4(a3) ; t[ 0 ] =  x[0*3] - x[3*3]               move.w   2*6(a0),d3               add.w    5*6(a0),d3               ext.l    d3               move.l   d3,1*4(a3) ; t[ 1 ] =  x[2*3] + x[5*3]               ; 0               M3       0,K3,d3               M3_SUB   2,K5               M3_ADD   3,K0               M3_SUB   5,K2               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W31      d3,6,0               W31      d4,11,5               ; 1               MT       0,K4,d3               MT_ADD   1,K1               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W31      d3,7,1               W31      d4,10,4               ; 2               M3       0,K5,d3               M3_ADD   2,K3               M3_SUB   3,K2               M3_SUB   5,K0               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W31      d3,8,2               W31      d4,9,3               ; 3+3               M3       0,K2,d3               neg.l    d3               M3_ADD   2,K0               M3_ADD   3,K5               M3_SUB   5,K3               add.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W32      d3,12,6               W32      d4,17,11               ; 4+3               MT       0,K1,d3               neg.l    d3               MT_ADD   1,K4               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W32      d3,13,7               W32      d4,16,10               ; 5+3               M3       0,K0,d3               neg.l    d3               M3_SUB   2,K2               M3_SUB   3,K3               M3_SUB   5,K5               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W32      d3,14,8               W32      d4,15,9               ; STEP 2               addq.l   #2,a0    ; in++;               ; Calc s[0..1],  t[0..1]               ;               M3       1,K1,d3               M3_ADD   4,K4               move.l   d3,0*4(a4) ; s[ 0 ] = M3( 1, K1 ) + M3( 4, K4 )               M3       1,K4,d3               M3_SUB   4,K1               move.l   d3,1*4(a4) ; s[ 1 ] = M3( 1, K4 ) - M3( 4, K1 )               move.w   0*6(a0),d3               sub.w    3*6(a0),d3               ext.l    d3               move.l   d3,0*4(a3) ; t[ 0 ] =  x[0*3] - x[3*3]               move.w   2*6(a0),d3               add.w    5*6(a0),d3               ext.l    d3               move.l   d3,1*4(a3) ; t[ 1 ] =  x[2*3] + x[5*3]               ; 0               M3       0,K3,d3               M3_SUB   2,K5               M3_ADD   3,K0               M3_SUB   5,K2               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W33      d3,12,0               W33      d4,17,5               ; 1               MT       0,K4,d3               MT_ADD   1,K1               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W33      d3,13,1               W33      d4,16,4               ; 2               M3       0,K5,d3               M3_ADD   2,K3               M3_SUB   3,K2               M3_SUB   5,K0               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W33      d3,14,2               W33      d4,15,3               ; 3+3               M3       0,K2,d3               neg.l    d3               M3_ADD   2,K0               M3_ADD   3,K5               M3_SUB   5,K3               add.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,0,6               W34      d4,5,11               ; 4+3               MT       0,K1,d3               neg.l    d3               MT_ADD   1,K4               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,1,7               W34      d4,4,10               ; 5+3               M3       0,K0,d3               neg.l    d3               M3_SUB   2,K2               M3_SUB   3,K3               M3_SUB   5,K5               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,2,8               W34      d4,3,9               ; STEP 3               addq.l   #2,a0    ; in++;               ; Calc s[0..1],  t[0..1]               ;               M3       1,K1,d3               M3_ADD   4,K4               move.l   d3,0*4(a4) ; s[ 0 ] = M3( 1, K1 ) + M3( 4, K4 )               M3       1,K4,d3               M3_SUB   4,K1               move.l   d3,1*4(a4) ; s[ 1 ] = M3( 1, K4 ) - M3( 4, K1 )               move.w   0*6(a0),d3               sub.w    3*6(a0),d3               ext.l    d3               move.l   d3,0*4(a3) ; t[ 0 ] =  x[0*3] - x[3*3]               move.w   2*6(a0),d3               add.w    5*6(a0),d3               ext.l    d3               move.l   d3,1*4(a3) ; t[ 1 ] =  x[2*3] + x[5*3]               ; 0               M3       0,K3,d3               M3_SUB   2,K5               M3_ADD   3,K0               M3_SUB   5,K2               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W35      d3,0,0               W35      d4,5,5               ; 1               MT       0,K4,d3               MT_ADD   1,K1               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W35      d3,1,1               W35      d4,4,4               ; 2               M3       0,K5,d3               M3_ADD   2,K3               M3_SUB   3,K2               M3_SUB   5,K0               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               neg.l    d4               W35      d3,2,2               W35      d4,3,3               ; 3+3               M3       0,K2,d3               neg.l    d3               M3_ADD   2,K0               M3_ADD   3,K5               M3_SUB   5,K3               add.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,6,6               W34      d4,11,11               ; 4+3               MT       0,K1,d3               neg.l    d3               MT_ADD   1,K4               sub.l    1*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,7,7               W34      d4,10,10               ; 5+3               M3       0,K0,d3               neg.l    d3               M3_SUB   2,K2               M3_SUB   3,K3               M3_SUB   5,K5               sub.l    0*4(a4),d3               IMDCT_FIX d3               move.l   d3,d4               W34      d3,8,8               W34      d4,9,9               subq.l   #4,a0    ; in -=2 (restore in)               move.l   a5,a3               unlk     a6               rtsimdct_win0     dc.w     715, 2139, 3546, 4927, 6270, 7565               dc.w     8803, 9974, 11069, 12080, 12998, 13818               dc.w     14533, 15137, 15626, 15996, 16244, 16368               dc.w     16368, 16244, 15996, 15626, 15137, 14533               dc.w     13818, 12998, 12080, 11069, 9974, 8803               dc.w     7565, 6270, 4927, 3546, 2139, 715imdct_win0_odd dc.w     715, -2139, 3546, -4927, 6270, -7565               dc.w     8803, -9974, 11069, -12080, 12998, -13818               dc.w     14533, -15137, 15626, -15996, 16244, -16368               dc.w     16368, -16244, 15996, -15626, 15137, -14533               dc.w     13818, -12998, 12080, -11069, 9974, -8803               dc.w     7565, -6270, 4927, -3546, 2139, -715imdct_win1     dc.w     715, 2139, 3546, 4927, 6270, 7565               dc.w     8803, 9974, 11069, 12080, 12998, 13818               dc.w     14533, 15137, 15626, 15996, 16244, 16368               dc.w     16384, 16384, 16384, 16384, 16384, 16384               dc.w     16244, 15137, 12998, 9974, 6270, 2139               dc.w     0, 0, 0, 0, 0, 0imdct_win1_odd dc.w     715, -2139, 3546, -4927, 6270, -7565               dc.w     8803, -9974, 11069, -12080, 12998, -13818               dc.w     14533, -15137, 15626, -15996, 16244, -16368               dc.w     16384, -16384, 16384, -16384, 16384, -16384               dc.w     16244, -15137, 12998, -9974, 6270, -2139               dc.w     0, 0, 0, 0, 0, 0imdct_win3     dc.w     0, 0, 0, 0, 0, 0               dc.w     2139, 6270, 9974, 12998, 15137, 16244               dc.w     16384, 16384, 16384, 16384, 16384, 16384               dc.w     16368, 16244, 15996, 15626, 15137, 14533               dc.w     13818, 12998, 12080, 11069, 9974, 8803               dc.w     7565, 6270, 4927, 3546, 2139, 715imdct_win3_odd dc.w     0, 0, 0, 0, 0, 0               dc.w     2139, -6270, 9974, -12998, 15137, -16244               dc.w     16384, -16384, 16384, -16384, 16384, -16384               dc.w     16368, -16244, 15996, -15626, 15137, -14533               dc.w     13818, -12998, 12080, -11069, 9974, -8803               dc.w     7565, -6270, 4927, -3546, 2139, -715imdct_win2     dc.w     2139, 6270, 9974, 12998, 15137, 16244               dc.w     16244, 15137, 12998, 9974, 6270, 2139imdct_win2_odd dc.w     2139, -6270, 9974, -12998, 15137, -16244               dc.w     16244, -15137, 12998, -9974, 6270, -2139imdct_win      dc.l     imdct_win0               dc.l     imdct_win1               dc.l     imdct_win2               dc.l     imdct_win3imdct_win_odd  dc.l     imdct_win0_odd               dc.l     imdct_win1_odd               dc.l     imdct_win2_odd               dc.l     imdct_win3_odd

⌨️ 快捷键说明

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