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

📄 mpegsubb.a

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 A
📖 第 1 页 / 共 3 页
字号:
               movem.l  (ps1)+,d1-d4   ; get pp0..pp3               FF4_MUL  d1,d2,d3,d4               movem.l  (ps1)+,d1-d4   ; get pp4..pp7               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               moveq.w  #4-1,d4fast_filter_q2               movem.l  (ps1)+,d1-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               bra      filter_band9filter_band1;               cmp.w    #2,d0               cmp.w    #2,d7 ; #2               bne      filter_band2               ; Filter only 1/2 freq               moveq.w  #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               bra      filter_band3filter_band2               ; Filter full freq               moveq.w  #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_f1filter_band3               bsr      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.w    #1,d7 ; #2               bne      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      filter_cos64,a0               moveq.w  #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               MUL32    (a0)+,d0               move.l   d0,(pd1)+               dbra     d2,filter_band_f2               bsr      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,d4filter_band9               unlk     a6    ; #2               movem.l  (sp)+,d2-d7/a2-a6               rts               section  ASMDATA,data               CNOP     0,4filter_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;               section  ASMVARS,bss;               CNOP     0,4;filter_p       ds.l     16;filter_pp      ds.l     16               section  ASMCODE,codeWINDOW_CLIP    equ      1;;              Window a sub band filtered sample;;              a0: out_filter_buffer;              a1: out_sample_buffer;              a2: dewindow (##4);              d0: buffer offset;              d1.w: w_begin  (#2);              d2.w: w_width  (#2);              d3.w: freq_div (#2);              d4.l: dew_shift (##4);              -> a1 = out_sample_buffer + out_sample_length@MPEGSUBB_window_band_MPEGSUBB_window_band               movem.l  d2-d7/a2-a6,-(sp);               move.w   w_begin,d1 ; #2               move.w   d2,-(sp) ; #2               move.l   a2,a4    ; ##4               lea.l    pcm_loops,a2 ; #2               move.w   (a2,d3.w*2),d6 ; #2               move.w   d3,d2 ; #2;               lea.l    window_table,a2     ;  ##4 External now               lea.l    (a4,d1.w*2),a2       ;  ##4 a2 = &dewindow[ w_begin ]               moveq.l  #INT_FACTOR-15,d7    ;  ##4 External now               add.l    d4,d7                ;  ##4 new scale               add.w    d0,d1               and.w    #15,d1               ; d1 = start               move.l   a0,a4                ; buf0 = &buf_ptr[ 0 ]               lea      (a0,d1.w*2),a3       ; buf1 = &buf_ptr[ start ];               move.w   w_width,d3 ; #2               move.w   (sp),d3 ; #2               add.w    d1,d3               cmp.w    #16,d3               ble      window_band1               moveq.w  #16,d3               ; d3 = topwindow_band1   sub.w    d1,d3                ; d3 = cnt1;               move.w   w_width,d4  ; #2               move.w   (sp),d4 ; #2               sub.w    d3,d4                ; d4 = cnt0;               move.w   freq_div,d2 ; #2               lsl.w    #4,d2               move.w   d2,d5               sub.w    d3,d5                ; off1 = freq_div*16 - cnt1               ext.l    d5               add.l    d5,d5               move.l   d5,a5                ; a5 = off1               move.w   d2,d5               sub.w    d4,d5                ; off0 = freq_div*16 - cnt0               ext.l    d5               add.l    d5,d5               move.l   d5,a6                ; a6 = off0;               sub.w    w_width,d2           ; offd = freq_div*16 - w_width (#2)               sub.w    (sp),d2                ; offd = freq_div*16 - w_width (#2)               ext.l    d2               add.l    d2,d2;               moveq.l  #WINDOW_FACTOR+INT_FACTOR-15,d7 ; ##4 External now;               move.w   pcm_count,d6  ; #2;               subq.w   #1,d6         ; for DBRA loop ; #2               IFD      OLD_WIN  ; ##1               subq.w   #1,d3                ; for DBRA loop               subq.w   #1,d4                ; for DBRA loopwindow_band2               clr.l    d5                   ; d5 = sum               move.w   d3,d0                ; d0 = cnt1

⌨️ 快捷键说明

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