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

📄 mpegsubf.a

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 A
📖 第 1 页 / 共 3 页
字号:
               MOVM     (ps1)+,fp4               FF4_MUL  fp1,fp2,fp3,fp4               lea      -16*4(a6),ps1  ; ps1=@pp(0) ; #1               lea      -32*4(a6),pd1   ; pd1=@p(0) ; #1               MOVM     #7.0710678118655e-1,fp3               moveq.l  #8-1,d4fast_filter_s2               MOVM     (ps1)+,fp1               MOVM     (ps1)+,fp2               FF2_MUL  fp1,fp2,fp3               dbra     d4,fast_filter_s2               rts;; GET_P <index> <dest ea>; copy p[ index ] into a destination <ea>; p is ps1;GET_P          MACRO               MOVM     \1*TSIZE(ps1),\2               ENDM;; ADD_P <index> <dest ea>; add p[ index ] to a destination <ea>; p is ps1;ADD_P          MACRO               ADDM     \1*TSIZE(ps1),\2               ENDM;; SET_S0 <index> <src ea>; copy a source <ea> into s0[ index ]; s0 is a1;SET_S0         MACRO               MOVM     \2,\1*DSIZE*16(a1)               ENDM;; SET_S1 <index> <src ea>; copy a source <ea> into s1[ index ]; s1 is a2;SET_S1         MACRO               MOVM     \2,\1*DSIZE*16(a2)               ENDM;; SET_S0_P <index> <src reg>; copy <reg>  into s0[ index ]; copy -<reg> into s0[ 32-index ]; s0 is a1; <reg> is modified;SET_S0_P       MACRO               MOVM     \2,\1*DSIZE*16(a1)               NEGR     \2               MOVM     \2,-\1*DSIZE*16+32*DSIZE*16(a1)               ENDM;; SET_S1_P <index> <src reg>; copy -<reg> into s1[ index ]; copy -<reg> into s1[ 32-index ]; s1 is a2; <reg> is modified;SET_S1_P       MACRO               NEGR     \2               MOVM     \2,\1*DSIZE*16(a2)               MOVM     \2,-\1*DSIZE*16+32*DSIZE*16(a2)               ENDM;              Apply the FAST synthesis filter to a sub band;              Generate full frequency sample;;              a0: bandPtr (=fraction) (float *);              a1: out_filter_buffer 0 (float *);              a2: out_filter_buffer 1 (float *);              d0.w: freq_div ; #1;; registers allocation: d6=MUL_SHIFT;@MPEGSUBF_filter_band_MPEGSUBF_filter_band               movem.l  d2-d7/a2-a6,-(sp)               fmovem.x fp0-fp7,-(sp)               move.w   d0,d7 ; #1               link     a6,#-32*4      ; #1 need of 2*16 longs               move.l   a0,ps1         ; ps1=fraction(0)               lea      32*SSIZE(ps1),ps2  ; ps2=fraction(32)               lea      -32*4(a6),pd1   ; pd1=@p(0) ; #1;               move.w   freq_div,d0;               cmp.w    #4,d0               cmp.w    #4,d7 ; #1               bne      filter_band1               ; Filter only 1/4 freq               moveq.l  #8-1,d2filter_band_q1                          ; p(i=0..7) = f(i)               move.l   (ps1)+,(pd1)+   ; FPU Version -> Floats on both sides               dbra     d2,filter_band_q1               lea      -32*4(a6),ps1   ; ps1=@p(0) ; #1               lea      8*TSIZE(ps1),ps2   ; ps2=@p(8)               lea      -16*4(a6),pd1  ; pd1=@pp(0) ; #1               FFF_MUL  5.0979557910416e-1,4      ; pp(i=0..3) = p(i) + p(7-i)               FFF_MUL  6.0134488693505e-1,4      ; pp(i=4..7) = COSx*[p(i) - p(7-i)]               FFF_MUL  8.9997622313642e-1,4               FFF_MUL  2.56291544774151,4               lea      -16*4(a6),ps1  ; ps1=@pp(0) ; #1               lea      -32*4(a6),pd1   ; pd1=@p(0) ; #1               MOVM     (ps1)+,fp1     ; get pp0..pp3               MOVM     (ps1)+,fp2               MOVM     (ps1)+,fp3               MOVM     (ps1)+,fp4               FF4_MUL  fp1,fp2,fp3,fp4               MOVM     (ps1)+,fp1     ; get pp4..pp7               MOVM     (ps1)+,fp2               MOVM     (ps1)+,fp3               MOVM     (ps1)+,fp4               FF4_MUL  fp1,fp2,fp3,fp4               lea      -32*4(a6),ps1   ; ps1=@p(0) ; #1               lea      -32*4(a6),pd1   ; pd1=@p(0) ; #1               MOVM     #7.0710678118655e-1,fp3               moveq.l  #4-1,d4fast_filter_q2               MOVM     (ps1)+,fp1               MOVM     (ps1)+,fp2               FF2_MUL  fp1,fp2,fp3               dbra     d4,fast_filter_q2               lea      -32*4(a6),ps1   ; ps1=@p(0) ; #1               GET_P    1,fp1               SET_S0   0,fp1               NEGR     fp1               SET_S1   0,fp1               GET_P    5,fp1               ADD_P    7,fp1               SET_S0_P 4,fp1               GET_P    3,fp1               SET_S0_P 8,fp1               GET_P    7,fp1               SET_S0_P 12,fp1;               SET_S0   16,#0               clr.l    16*DSIZE*16(a1)               GET_P    6,fp3               ADD_P    7,fp3               MOVR     fp3,fp4               ADD_P    5,fp4               SET_S1_P 4,fp4               GET_P    2,fp4               ADD_P    3,fp4               SET_S1_P 8,fp4               MOVR     fp3,fp4               ADD_P    4,fp4               SET_S1_P 12,fp4               GET_P    0,fp4               NEGR     fp4               SET_S1   16,fp4               bra      filter_band9filter_band1;               cmp.w    #2,d0               cmp.w    #2,d7 ; #1               bne      filter_band2               ; Filter only 1/2 freq               moveq.l  #16-1,d2filter_band_h1                         ; p(i=0..15) = f(i); WARNING whith integer: ps1 is w and pd1 is l               move.l   (ps1)+,(pd1)+               dbra     d2,filter_band_h1               bra      filter_band3filter_band2               ; Filter full freq               moveq.l  #16-1,d2filter_band_f1                         ; p(i=0..15) = f(i) + f(31-i)               MOVM     (ps1)+,fp0               ADDM     -(ps2),fp0               MOVM     fp0,(pd1)+               dbra     d2,filter_band_f1filter_band3               bsr      fast_filter_sub               lea      -32*4(a6),ps1   ; ps1=@p(0) ; #1               GET_P    13,fp0               ADD_P    15,fp0               GET_P    1,fp1               SET_S0   0,fp1               NEGR     fp1               SET_S1   0,fp1               MOVR     fp0,fp1               ADD_P    9,fp1               SET_S0_P 2,fp1               GET_P    5,fp1               ADD_P    7,fp1               SET_S0_P 4,fp1               MOVR     fp0,fp1               ADD_P    11,fp1               SET_S0_P 6,fp1               GET_P    3,fp1               SET_S0_P 8,fp1               GET_P    11,fp1               ADD_P    15,fp1               SET_S0_P 10,fp1               GET_P    7,fp1               SET_S0_P 12,fp1               GET_P    15,fp1               SET_S0_P 14,fp1;               SET_S0   16,#0               clr.l    16*DSIZE*16(a1)               ADD_P    14,fp0               GET_P    12,fp1               ADD_P    14,fp1               ADD_P    15,fp1               GET_P    10,fp2               ADD_P    11,fp2               GET_P    6,fp3               ADD_P    7,fp3               MOVR     fp0,fp4               ADD_P    9,fp4               SET_S1_P 2,fp4               MOVR     fp3,fp4               ADD_P    5,fp4               SET_S1_P 4,fp4               MOVR     fp0,fp4               ADDR     fp2,fp4               SET_S1_P 6,fp4               GET_P    2,fp4               ADD_P    3,fp4               SET_S1_P 8,fp4               MOVR     fp1,fp4               ADDR     fp2,fp4               SET_S1_P 10,fp4               MOVR     fp3,fp4               ADD_P    4,fp4               SET_S1_P 12,fp4               MOVR     fp1,fp4               ADD_P    8,fp4               SET_S1_P 14,fp4               GET_P    0,fp4               NEGR     fp4               SET_S1   16,fp4;               move.w   freq_div,d0;               cmp.w    #1,d0               cmp.w    #1,d7 ; #1               bne      filter_band9               move.l   a0,ps1         ; ps1=fraction(0)               lea      32*SSIZE(ps1),ps2  ; ps2=fraction(32)               lea      -32*4(a6),pd1   ; pd1=@p(0) ; #1               lea      filter_cos64,a0               moveq.l  #16-1,d2filter_band_f2                         ; p(i=0..15) = COSx*[f(i) - f(31-i)]               MOVM     (ps1)+,fp0               MOVM     -(ps2),fp1               SUBR     fp1,fp0               MULM     (a0)+,fp0               MOVM     fp0,(pd1)+               dbra     d2,filter_band_f2               bsr      fast_filter_sub               lea      -32*4(a6),ps1   ; ps1=@p(0) ; #1               GET_P    13,fp0               ADD_P    15,fp0               GET_P    11,fp1               ADD_P    15,fp1               GET_P    5,fp2               ADD_P    7,fp2               MOVR     fp0,fp3               ADD_P    9,fp3               MOVR     fp3,fp4               ADD_P    1,fp4               SET_S0_P 1,fp4               MOVR     fp2,fp4               ADDR     fp3,fp4               SET_S0_P 3,fp4               MOVR     fp0,fp3               ADD_P    11,fp3               MOVR     fp3,fp4               ADDR     fp2,fp4               SET_S0_P 5,fp4               MOVR     fp3,fp4               ADD_P    3,fp4               SET_S0_P 7,fp4               MOVR     fp1,fp4               ADD_P    3,fp4               SET_S0_P 9,fp4               MOVR     fp1,fp4               ADD_P    7,fp4               SET_S0_P 11,fp4               GET_P    7,fp4               ADD_P    15,fp4               SET_S0_P 13,fp4               GET_P    15,fp4               SET_S0_P 15,fp4               ADD_P    14,fp0               GET_P    12,fp1               ADD_P    14,fp1               ADD_P    15,fp1               GET_P    10,fp2               ADD_P    11,fp2               GET_P    6,fp3               ADD_P    7,fp3               GET_P    1,fp4               ADD_P    9,fp4               ADDR     fp0,fp4               SET_S1_P 1,fp4               GET_P    5,fp5               ADDR     fp3,fp5               ADDR     fp0,fp5               GET_P    9,fp4               ADDR     fp5,fp4               SET_S1_P 3,fp4               MOVR     fp5,fp4               ADDR     fp2,fp4               SET_S1_P 5,fp4               GET_P    2,fp5               ADD_P    3,fp5               ADDR     fp2,fp5               MOVR     fp0,fp4               ADDR     fp5,fp4               SET_S1_P 7,fp4               MOVR     fp1,fp4               ADDR     fp5,fp4               SET_S1_P 9,fp4               GET_P    4,fp5               ADDR     fp3,fp5               ADDR     fp1,fp5               MOVR     fp2,fp4               ADDR     fp5,fp4               SET_S1_P 11,fp4               GET_P    8,fp4               ADDR     fp5,fp4               SET_S1_P 13,fp4               GET_P    0,fp4               ADD_P    8,fp4               ADDR     fp1,fp4               SET_S1_P 15,fp4filter_band9               unlk     a6    ; #1               fmovem.x (sp)+,fp0-fp7               movem.l  (sp)+,d2-d7/a2-a6               rts               section  ASMCODE,codeWINDOW_CLIP    equ      1

⌨️ 快捷键说明

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