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

📄 coldfire_mpegsubb.s

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 S
📖 第 1 页 / 共 3 页
字号:
//MPEGSUBB_filter_band:               move.l   sp@(4), a0               move.l   sp@(8), a1               move.l   sp@(12), d1               move.l   sp@(16), d0	       ext.l	d0			   sub.l    #44, sp               movem.l  d2-d7/a2-a6,(sp)			   move.l   d1, a2               move.l   d0,d7 // #2               link     a6,#-32*4      // #2 need of 2*16 longs               moveq.l  #MUL_SHIFT,d6  // For MUL32 normalize shift               move.l   a0,ps1         // ps1=fraction(0)               lea      32*2(ps1),ps2  // ps2=fraction(32)//               lea      filter_p,pd1   // pd1=@p(0)               lea      -32*4(a6),pd1  // pd1=@p(0)//               move.w   freq_div,d0//               cmp.w    #4,d0               cmp.l    #4,d7 // #2               jbne      filter_band1               // Filter only 1/4 freq               move.l  #8-1,d2filter_band_q1:                                            // p(i=0..7) = f(i)               move.w   (ps1)+,d0               ext.l    d0               move.l   d0,(pd1)+               DBRA     (d2,filter_band_q1)//               lea      filter_p,ps1   // ps1=@p(0)               lea      -32*4(a6),ps1   // ps1=@p(0)               lea      8*4(ps1),ps2   // ps2=@p(8)//               lea      filter_pp,pd1  // pd1=@pp(0)               lea      -16*4(a6),pd1  // pd1=@pp(0)               FFF_MUL  (COS1_16,4)      // pp(i=0..3) = p(i) + p(7-i)               FFF_MUL  (COS3_16,4)      // pp(i=4..7) = COSx*[p(i) - p(7-i)]               FFF_MUL  (COS5_16,4)               FFF_MUL  (COS7_16,4)//               lea      filter_pp,ps1  // ps1=@pp(0)               lea      -16*4(a6),ps1  // ps1=@pp(0)//               lea      filter_p,pd1   // pd1=@p(0)               lea      -32*4(a6),pd1   // pd1=@p(0)	       move.l	(ps1)+, d1	// get pp0..pp3	       move.l	(ps1)+, d2	       move.l	(ps1)+, d3	       move.l	(ps1)+, d4               FF4_MUL  (d1,d2,d3,d4)	       move.l	(ps1)+, d1	// get pp4..pp7	       move.l	(ps1)+, d2	       move.l	(ps1)+, d3	       move.l	(ps1)+, d4               FF4_MUL  (d1,d2,d3,d4)//               lea      filter_p,ps1   // ps1=@p(0)               lea      -32*4(a6),ps1   // ps1=@p(0)//               lea      filter_p,pd1   // pd1=@p(0)               lea      -32*4(a6),pd1   // pd1=@p(0)               move.l   #COS1_4,d3               move.l  #4-1,d4fast_filter_q2:	       move.l	(ps1)+,d1	       move.l	(ps1)+,d2               FF2_MUL  (d1,d2,d3)               DBRA     (d4,fast_filter_q2)//               lea      filter_p,ps1   // ps1=@p(0)               lea      -32*4(a6),ps1   // ps1=@p(0)               GET_P    (1,d1)               SET_S0   (0,d1)               neg.l    d1               SET_S1   (0,d1)               GET_P    (5,d1)               ADD_P    (7,d1)               SET_S0_P (4,d1)               GET_P    (3,d1)               SET_S0_P (8,d1)               GET_P    (7,d1)               SET_S0_P (12,d1)               SET_S0   (16,#0)               GET_P    (6,d3)               ADD_P    (7,d3)               move.l   d3,d4               ADD_P    (5,d4)               SET_S1_P (4,d4)               GET_P    (2,d4)               ADD_P    (3,d4)               SET_S1_P (8,d4)               move.l   d3,d4               ADD_P    (4,d4)               SET_S1_P (12,d4)               GET_P    (0,d4)               neg.l    d4               SET_S1   (16,d4)               jbra      filter_band9filter_band1://               cmp.w    #2,d0               cmp.l    #2,d7 // #2               jbne      filter_band2               // Filter only 1/2 freq               move.l  #16-1,d2filter_band_h1:                                             // p(i=0..15) = f(i)               move.w   (ps1)+,d0               ext.l    d0               move.l   d0,(pd1)+               DBRA     (d2,filter_band_h1)               jbra      filter_band3filter_band2:               // Filter full freq               move.l  #16-1,d2filter_band_f1:                         // p(i=0..15) = f(i) + f(31-i)               move.w   (ps1)+,d0               move.w   -(ps2),d1               ext.l    d0               ext.l    d1               add.l    d0,d1               move.l   d1,(pd1)+               DBRA     (d2,filter_band_f1)filter_band3:               jbsr      fast_filter_sub//               lea      filter_p,ps1   // ps1=@p(0)               lea      -32*4(a6),ps1   // ps1=@p(0)               GET_P    (13,d0)               ADD_P    (15,d0)               GET_P    (1,d1)               SET_S0   (0,d1)               neg.l    d1               SET_S1   (0,d1)               move.l   d0,d1               ADD_P    (9,d1)               SET_S0_P (2,d1)               GET_P    (5,d1)               ADD_P    (7,d1)               SET_S0_P (4,d1)               move.l   d0,d1               ADD_P    (11,d1)               SET_S0_P (6,d1)               GET_P    (3,d1)               SET_S0_P (8,d1)               GET_P    (11,d1)               ADD_P    (15,d1)               SET_S0_P (10,d1)               GET_P    (7,d1)               SET_S0_P (12,d1)               GET_P    (15,d1)               SET_S0_P (14,d1)               SET_S0   (16,#0)               ADD_P    (14,d0)               GET_P    (12,d1)               ADD_P    (14,d1)               ADD_P    (15,d1)               GET_P    (10,d2)               ADD_P    (11,d2)               GET_P    (6,d3)               ADD_P    (7,d3)               move.l   d0,d4               ADD_P    (9,d4)               SET_S1_P (2,d4)               move.l   d3,d4               ADD_P    (5,d4)               SET_S1_P (4,d4)               move.l   d0,d4               add.l    d2,d4               SET_S1_P (6,d4)               GET_P    (2,d4)               ADD_P    (3,d4)               SET_S1_P (8,d4)               move.l   d1,d4               add.l    d2,d4               SET_S1_P (10,d4)               move.l   d3,d4               ADD_P    (4,d4)               SET_S1_P (12,d4)               move.l   d1,d4               ADD_P    (8,d4)               SET_S1_P (14,d4)               GET_P    (0,d4)               neg.l    d4               SET_S1   (16,d4)//               move.w   freq_div,d0//               cmp.w    #1,d0               cmp.l    #1,d7 // #2               jbne      filter_band9               move.l   a0,ps1         // ps1=fraction(0)               lea      32*2(ps1),ps2  // ps2=fraction(32)//               lea      filter_p,pd1   // pd1=@p(0)               lea      -32*4(a6),pd1   // pd1=@p(0)               lea      pc@(filter_cos64),a0               move.l   #16-1,d2filter_band_f2:                         // p(i=0..15) = COSx*[f(i) - f(31-i)]               move.w   (ps1)+,d0               move.w   -(ps2),d1               ext.l    d0               ext.l    d1               sub.l    d1,d0               MUL32AM  ((a0)+,d0)               move.l   d0,(pd1)+               DBRA     (d2,filter_band_f2)               jbsr      fast_filter_sub//               lea      filter_p,ps1   // ps1=@p(0)               lea      -32*4(a6),ps1   // ps1=@p(0)               GET_P    (13,d0)               ADD_P    (15,d0)               GET_P    (11,d1)               ADD_P    (15,d1)               GET_P    (5,d2)               ADD_P    (7,d2)               move.l   d0,d3               ADD_P    (9,d3)               move.l   d3,d4               ADD_P    (1,d4)               SET_S0_P (1,d4)               move.l   d2,d4               add.l    d3,d4               SET_S0_P (3,d4)               move.l   d0,d3               ADD_P    (11,d3)               move.l   d3,d4               add.l    d2,d4               SET_S0_P (5,d4)               move.l   d3,d4               ADD_P    (3,d4)               SET_S0_P (7,d4)               move.l   d1,d4               ADD_P    (3,d4)               SET_S0_P (9,d4)               move.l   d1,d4               ADD_P    (7,d4)               SET_S0_P (11,d4)               GET_P    (7,d4)               ADD_P    (15,d4)               SET_S0_P (13,d4)               GET_P    (15,d4)               SET_S0_P (15,d4)               ADD_P    (14,d0)               GET_P    (12,d1)               ADD_P    (14,d1)               ADD_P    (15,d1)               GET_P    (10,d2)               ADD_P    (11,d2)               GET_P    (6,d3)               ADD_P    (7,d3)               GET_P    (1,d4)               ADD_P    (9,d4)               add.l    d0,d4               SET_S1_P (1,d4)               GET_P    (5,d5)               add.l    d3,d5               add.l    d0,d5               GET_P    (9,d4)               add.l    d5,d4               SET_S1_P (3,d4)               move.l   d5,d4               add.l    d2,d4               SET_S1_P (5,d4)               GET_P    (2,d5)               ADD_P    (3,d5)               add.l    d2,d5               move.l   d0,d4               add.l    d5,d4               SET_S1_P (7,d4)               move.l   d1,d4               add.l    d5,d4               SET_S1_P (9,d4)               GET_P    (4,d5)               add.l    d3,d5               add.l    d1,d5               move.l   d2,d4               add.l    d5,d4               SET_S1_P (11,d4)               GET_P    (8,d4)               add.l    d5,d4               SET_S1_P (13,d4)               GET_P    (0,d4)               ADD_P    (8,d4)               add.l    d1,d4               SET_S1_P (15,d4)filter_band9:               unlk     a6    // #2               movem.l  (sp),d2-d7/a2-a6			   add.l	#44,sp               rtsfilter_cos64:               dc.l     COS1_64, COS3_64, COS5_64, COS7_64               dc.l     COS9_64, COS11_64, COS13_64, COS15_64               dc.l     COS17_64, COS19_64, COS21_64, COS23_64               dc.l     COS25_64, COS27_64, COS29_64, COS31_64               // #2 Begin               // pcm_loops[ freq_div ] = = (32 / freq_div) - 1pcm_loops:     dc.w     0, 31, 15, 9, 7, 0               // #2 End#define WINDOW_CLIP    1////              Window a sub band filtered sample////              a0: out_filter_buffer

⌨️ 快捷键说明

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