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

📄 iir16_emac.s.list

📁 freescale MAC DSP的算法库(FFT
💻 LIST
📖 第 1 页 / 共 4 页
字号:
0x0000031e: 2025                                move.l       -(a5), d0        ;iCurY1 = *--pCurY; iCurY0 = *--pCurY;


                             ;--== Fourth input sample and coefficient multiplication ==--
0x00000320: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX1
                             ;--== Fourth output sample and coefficient multiplication ==--
0x00000324: a0040200                            mac.w        d4.l, d0.l, <<, ACC0 ;iOut0 += iCurB * iCurY1

                             ;--== Next coefficients loading	==--
0x00000328: 281b                                move.l       (a3)+, d4        ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;

                             ;--== Next Four input sample and coefficients multiplication ==--
0x0000032a: a40402c0                            mac.w        d4.u, d2.u, <<, ACC0 ;iOut0 += iCurA * iCurX0
0x0000032e: a4840240                            mac.w        d4.u, d2.l, <<, ACC1 ;iOut1 += iCurA * iCurX1
0x00000332: a60402d0                            mac.w        d4.u, d3.u, <<, ACC2 ;iOut2 += iCurA * iCurX2
0x00000336: a6840250                            mac.w        d4.u, d3.l, <<, ACC3 ;iOut3 += iCurA * iCurX3

                             ;--== Next Four output sample and coefficients multiplication ==--
0x0000033a: a0040280                            mac.w        d4.l, d0.u, <<, ACC0 ;iOut0 += iCurB * iCurY0
0x0000033e: a0840200                            mac.w        d4.l, d0.l, <<, ACC1 ;iOut1 += iCurB * iCurY1
0x00000342: a2040290                            mac.w        d4.l, d1.u, <<, ACC2 ;iOut2 += iCurB * iCurY2
                             ;--== Last mac instruction with next coefficients loading ==--
0x00000346: a81b1214                            mac.w        d4.l, d1.l, <<, (a3)+, d4, ACC3 ;iOut3 += iCurB * iCurY3
                                                                              ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;

0x0000034a: 60ae                                bra          .ForIn1E         ;}

                             .EndIn1E                                         

                             ;--==Storing computed samples into the memory==--

0x0000034c: 2606                                move.l       d6, d3           
0x0000034e: 264e                                move.l       a6, a3           ;pCurCoef = pIirCoef;
0x00000350: 5383                                subq.l       #1, d3           
0x00000352: 6d00001a                            blt          .NextPre         
0x00000356: 282b0004                            move.l       4(a3), d4        ;pCurB = pIirCoef[2];

0x0000035a: 5383                                subq.l       #1, d3           
0x0000035c: 6d000010                            blt          .NextPre         
0x00000360: 382b0008                            move.w       8(a3), d4        ;pCurA = pIirCoef[4];

0x00000364: 5383                                subq.l       #1, d3           
0x00000366: 6d000006                            blt          .NextPre         
0x0000036a: 2a2b000c                            move.l       12(a3), d5       ;j = pIirCoef[6];
                             .NextPre                                         

0x0000036e: 2606                                move.l       d6, d3           

0x00000370: a1c0                                movclr.l     ACC0, d0         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;*pY++ = iOut0
                             ;#endif	
0x00000372: 32c0                                move.w       d0, (a1)+        ;

0x00000374: 5383                                subq.l       #1, d3           
0x00000376: 6d000006                            blt          .NextY1          
0x0000037a: a0840240                            mac.w        d4.u, d0.l, <<, ACC1 ;iOut1 += iCurB * iOut0

                             .NextY1                                          

0x0000037e: 2606                                move.l       d6, d3           

0x00000380: a3c1                                movclr.l     ACC1, d1         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d1						;*pY++ = iOut1
                             ;#endif	
0x00000382: 32c1                                move.w       d1, (a1)+        ;

0x00000384: 5383                                subq.l       #1, d3           
0x00000386: 6d000010                            blt          .NextY2          
0x0000038a: a2040250                            mac.w        d4.u, d1.l, <<, ACC2 ;iOut2 += iCurB * iOut1

0x0000038e: 5383                                subq.l       #1, d3           
0x00000390: 6d000006                            blt          .NextY2          
0x00000394: a0040210                            mac.w        d4.l, d0.l, <<, ACC2 ;iOut2 += iCurA * iOut0

                             .NextY2                                          
0x00000398: 2606                                move.l       d6, d3           

0x0000039a: a5c2                                movclr.l     ACC2, d2         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d2						;*pY++ = iOut2
                             ;#endif	
0x0000039c: 32c2                                move.w       d2, (a1)+        ;

0x0000039e: 5383                                subq.l       #1, d3           
0x000003a0: 6d00001a                            blt          .NextY3          
0x000003a4: a4840250                            mac.w        d4.u, d2.l, <<, ACC3 ;iOut3 += iCurB * iOut2

0x000003a8: 5383                                subq.l       #1, d3           
0x000003aa: 6d000010                            blt          .NextY3          
0x000003ae: a2840210                            mac.w        d4.l, d1.l, <<, ACC3 ;iOut3 += iCurA * iOut1

0x000003b2: 5383                                subq.l       #1, d3           
0x000003b4: 6d000006                            blt          .NextY3          
0x000003b8: a0850250                            mac.w        d5.u, d0.l, <<, ACC3 ;iOut3 += j * iOut0
                             .NextY3                                          
0x000003bc: a7c0                                movclr.l     ACC3, d0         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;*pY++ = iOut3
                             ;#endif	
0x000003be: 32c0                                move.w       d0, (a1)+        ;
0x000003c0: 5387                                subq.l       #1, d7           ;i --;
0x000003c2: 6600fec8                            bne          .BegD4E          ;}

                             .EndD4E                                          
                             ;---=Computation of N % 4 last output samples==--
                             .BegTail2                                        
0x000003c6: 2c2a0004                            move.l       4(a2), d6        ;tmp = IIR->iIirCoefCount;
0x000003ca: 2e2f0050                            move.l       80(a7), d7       ;i = n;

0x000003ce: 5386                                subq.l       #1, d6           ;tmp = (tmp - 1) / 2;
0x000003d0: e286                                asr.l        #1, d6           ;
0x000003d2: 9e86                                sub.l        d6, d7           ;i -= tmp;

0x000003d4: 028700000003                        andi.l       #3, d7           ;i &= 3;

0x000003da: 67000034                            beq          .EndTail2        ;while(i)
                                                                              ;{
                             .BegOutTail2                                     

                             ;--== Next input samples loading	==--
0x000003de: 3410                                move.w       (a0), d2         ;iCurX0 = pX;
0x000003e0: 2848                                movea.l      a0, a4           ;pCurX = pX;
0x000003e2: 41e80002                            lea          2(a0), a0        ;pX++;

0x000003e6: 2a49                                movea.l      a1, a5           ;pCurY = pY;

                             ;--== Next coefficient loading	==--
0x000003e8: 264e                                move.l       a6, a3           ;pCurCoef = pIirCoef;
0x000003ea: 2813                                move.l       (a3), d4         ;iCurA = *pCurCoef;
0x000003ec: 47eb0002                            lea          2(a3), a3        ;pCurCoef++;

                             ;--== Input samples and first coefficient multiplications ==--
0x000003f0: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX0

                             ;--== The count of inner loops calculation ==-- 
0x000003f4: 2a06                                move.l       d6, d5           ;j = tmp;

                             .ForInTail2                                      ;do{

                             ;--== Next coefficients loading	==--
0x000003f6: 281b                                move.l       (a3)+, d4        ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;

                             ;--== Next input samples loading	==--
0x000003f8: 3424                                move.w       -(a4), d2        ;iCurX0 = *--pCurX;
                             ;--== Next output samples loading	==--
0x000003fa: 3025                                move.w       -(a5), d0        ;iCurY0 = *--pCurY;

                             ;--== Two multiplications for each output sample ==--
0x000003fc: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX0
0x00000400: a0040200                            mac.w        d4.l, d0.l, <<, ACC0 ;iOut0 += iCurB * iCurY0

0x00000404: 5385                                subq.l       #1, d5           ;j--;
0x00000406: 66ee                                bne          .ForInTail2      ;}while(j);

                             .EndInTail2                                      

                             ;--==Storing computed sample into the memory==--
0x00000408: a1c0                                movclr.l     ACC0, d0         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;*pY++ = iOut0;
                             ;#endif	
0x0000040a: 32c0                                move.w       d0, (a1)+        ;

0x0000040c: 5387                                subq.l       #1, d7           ;i--;
0x0000040e: 66ce                                bne          .BegOutTail2     ;}

                             .EndTail2                                        
                             ;--==Filling history buffer==--
0x00000410: 266a0008                            move.l       8(a2), a3        ;pCurHistory = IIR->pIirHistory;
0x00000414: 202a0004                            move.l       4(a2), d0        ;i = IIR->iIirCoefCount;
0x00000418: 5380                                subq.l       #1, d0           ;i--;
0x0000041a: 2540000c                            move.l       d0, 12(a2)       ;IIR->iIirHistoryCount = i;
0x0000041e: e388                                lsl.l        #1, d0           ;i /= 2;
0x00000420: d7c0                                adda.l       d0, a3           ;pCurHistory += i;
                                                                              ;do{
                             .NextHist                                        
0x00000422: 3720                                move.w       -(a0), -(a3)     ;*--pCurHistory = *--pX;
0x00000424: 3721                                move.w       -(a1), -(a3)     ;*--pCurHistory = *--pY;

0x00000426: 5980                                subq.l       #4, d0           ;i += 4;
0x00000428: 66f8                                bne          .NextHist        ;}while(i);

                             ;--==Restoring old MAC status register==--
0x0000042a: 202f003c                            move.l       60(a7), d0       
0x0000042e: a900                                move.l       d0, MACSR        

0x00000430: 4cd77fff                            movem.l      (a7), d0-d7/a0-a6 
0x00000434: 4fef0040                            lea          64(a7), a7       
0x00000438: 4e75                                rts                           

⌨️ 快捷键说明

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