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

📄 fir16_emac.s.list

📁 freescale MAC DSP的算法库(FFT
💻 LIST
📖 第 1 页 / 共 3 页
字号:
                             ;--== Next coefficients loading	==--
0x000000e2: 281b                                move.l       (a3)+, d4        ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;
                             .ForInH                                          


                             ;--== Three first input samples and coefficients multiplication ==--
0x000000e4: a48402c0                            mac.w        d4.u, d2.u, <<, ACC1 ;iOut1 += iCurA0 * iCurX0
0x000000e8: a4040250                            mac.w        d4.u, d2.l, <<, ACC2 ;iOut2 += iCurA0 * iCurX1
0x000000ec: a68402d0                            mac.w        d4.u, d3.u, <<, ACC3 ;iOut3 += iCurA0 * iCurX2


                             ;--== Loading two next input samples ==--	
0x000000f0: 2602                                move.l       d2, d3           ;iCurX3 = iCurX1; 	iCurX2 = iCurX0;
0x000000f2: 2424                                move.l       -(a4), d2        ;iCurX1 = *--pCurHistory; iCurX0 = *--pCurHistory;


                             ;--== Fourth input sample and coefficient multiplication ==--
0x000000f4: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0

                             ;--== Next Four input sample and coefficients multiplication ==--
0x000000f8: a4040280                            mac.w        d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA1 * iCurX0
0x000000fc: a4840200                            mac.w        d4.l, d2.l, <<, ACC1 ;iOut1 += iCurA1 * iCurX1
0x00000100: a6040290                            mac.w        d4.l, d3.u, <<, ACC2 ;iOut2 += iCurA1 * iCurX2
                             ;--== Last mac instruction with next coefficients loading ==--
0x00000104: a81b3214                            mac.w        d4.l, d3.l, <<, (a3)+, d4, ACC3 ;iOut3 += iCurA1 * iCurX3
                                                                              ;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;

0x00000108: 5585                                subq.l       #2, d5           ;j -= 2;
0x0000010a: 6ed8                                bgt          .ForInH          ;}

                             .EndInH                                          
0x0000010c: 6000001e                            bra          .EndH            ;}
                                                                              ;else{
                             .BegNoHistory                                    
                             ;---=Final computations if history buffer is void==--
                             ;--== Next coefficients loading	==--
0x00000110: 281b                                move.l       (a3)+, d4        ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;

0x00000112: a48402c0                            mac.w        d4.u, d2.u, <<, ACC1 ;iOut1 += iCurA0 * iCurX1
0x00000116: a4040250                            mac.w        d4.u, d2.l, <<, ACC2 ;iOut2 += iCurA0 * iCurX2
0x0000011a: a68402d0                            mac.w        d4.u, d3.u, <<, ACC3 ;iOut3 += iCurA0 * iCurX3

0x0000011e: a4040290                            mac.w        d4.l, d2.u, <<, ACC2 ;iOut2 += iCurA1 * iCurX2
0x00000122: a4840210                            mac.w        d4.l, d2.l, <<, ACC3 ;iOut3 += iCurA1 * iCurX3

                             ;--== Next coefficient loading	==--
0x00000126: 381b                                move.w       (a3)+, d4        ;iCurA0 = *pCurCoef++;

0x00000128: a4840290                            mac.w        d4.l, d2.u, <<, ACC3 ;iOut3 += iCurA0 * iCurX3

                                                                              ;} 

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

0x0000012c: 264e                                move.l       a6, a3           ;pCurCoef = pIirCoef

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

0x00000132: a3c0                                movclr.l     ACC1, d0         ;*pY++ = iOut1
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;
                             ;#endif	
0x00000134: 32c0                                move.w       d0, (a1)+        ;

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

0x0000013a: a7c0                                movclr.l     ACC3, d0         ;*pY++ = iOut3
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;
                             ;#endif	
0x0000013c: 32c0                                move.w       d0, (a1)+        ;
0x0000013e: 5987                                subq.l       #4, d7           ;i -= 4;
0x00000140: 6e00ff08                            bgt          .BegD4           ;}while(i > 0);

0x00000144: 6000000c                            bra          .EndD4           
                             .EndD4Z                                          

0x00000148: 2e06                                move.l       d6, d7           ;
0x0000014a: 67000094                            beq          .EndTailH        ;
0x0000014e: 60000008                            bra          .BegTailH        ;

                             .EndD4                                           
0x00000152: 5887                                addq.l       #4, d7           ; i += 4;

0x00000154: 6700008a                            beq          .EndTailH        ;while(i)
                                                                              ;{

                             ;---=Computation of N % 4 last output samples==--
                             .BegTailH                                        

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

                             ;--== Next coefficients loading	==--
0x00000160: 264e                                move.l       a6, a3           ;pCurCoef = pIirCoef;
0x00000162: 2813                                move.l       (a3), d4         ;iCurA0 = *pCurCoef;
0x00000164: 47eb0002                            lea          2(a3), a3        ;pCurCoef++;

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

                             ;--== The count of inner loops calculation ==-- 
0x0000016c: 2a06                                move.l       d6, d5           ;
0x0000016e: 9a87                                sub.l        d7, d5           ;j = tmp - i;
0x00000170: 6f000028                            ble          .EndIn1TailH     ;while(j > 0)
                                                                              ;{
0x00000174: 08050000                            btst.l       #0, d5           
0x00000178: 67000010                            beq          .ForIn1TailH     

                             ;--== This part is executed only if j is odd ==--	
                             ;--== Next coefficients loading	==--
0x0000017c: 381b                                move.w       (a3)+, d4        ;iCurA0 = *pCurCoef++;

                             ;--== Next input sample loading	==--
0x0000017e: 3424                                move.w       -(a4), d2        ;iCurX = *--pCurX;

                             ;--== Input samples and first coefficient multiplications ==--
0x00000180: a4040200                            mac.w        d4.l, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0

0x00000184: 5385                                subq.l       #1, d5           
0x00000186: 67000012                            beq          .EndIn1TailH     
                             .ForIn1TailH                                     

                             ;--== Next coefficients loading	==--
0x0000018a: 281b                                move.l       (a3)+, d4        ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;

                             ;--== Next input samples loading	==--
0x0000018c: 2424                                move.l       -(a4), d2        ;iCurX0 = *--pCurX;iCurX1 = *--pCurX;
                             ;--== Two multiplications for each output sample ==--
0x0000018e: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
0x00000192: a4040280                            mac.w        d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA1 * iCurX1

0x00000196: 5585                                subq.l       #2, d5           ;j-= 2;
0x00000198: 6ef0                                bgt          .ForIn1TailH     ;}

                             .EndIn1TailH                                     

0x0000019a: 2a2a000c                            move.l       12(a2), d5       ;if(pIIR->iIirHistoryCount)
0x0000019e: 67000036                            beq          .EndInHTail      ;{
                             ;--== The count of inner loops calculation ==-- 
0x000001a2: 2a07                                move.l       d7, d5           ;j = i
0x000001a4: 6f000030                            ble          .EndInHTail      ;if(j > 0)
                                                                              ;{
                             ;--== Current history buffer pointer initialization==--
0x000001a8: 286a0008                            move.l       8(a2), a4        ;pCurHustory = pIirHistory + tmp * 2
0x000001ac: d9c6                                adda.l       d6, a4           ;
0x000001ae: d9c6                                adda.l       d6, a4           ;while(j > 0)
                                                                              ;{

0x000001b0: 08050000                            btst.l       #0, d5           
0x000001b4: 67000010                            beq          .ForInHTail      
                             ;--== This part is executed only if j is odd ==--	
                             ;--== Next coefficient loading	==--
0x000001b8: 381b                                move.w       (a3)+, d4        ;iCurA0 = *pCurCoef++;

                             ;--== Next input sample loading	==--
0x000001ba: 3424                                move.w       -(a4), d2        ;iCurX = *--pCurX;

0x000001bc: a4040200                            mac.w        d4.l, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0

0x000001c0: 5385                                subq.l       #1, d5           
0x000001c2: 67000012                            beq          .EndInHTail      

                             .ForInHTail                                      

                             ;--== Next coefficients loading	==--
0x000001c6: 281b                                move.l       (a3)+, d4        ;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;

                             ;--== Next input samples loading	==--
0x000001c8: 2424                                move.l       -(a4), d2        ;iCurX0 = *--pCurHistory;iCurX1 = *--pCurHistory;

                             --== Two multiplications for each output sample ==--
0x000001ca: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
0x000001ce: a4040280                            mac.w        d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA1 * iCurX1

0x000001d2: 5585                                subq.l       #2, d5           ;j -= 2;
0x000001d4: 6ef0                                bgt          .ForInHTail      ;}

                             .EndInHTail                                      ;}

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

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

0x000001da: 5387                                subq.l       #1, d7           ;i -= 1;
0x000001dc: 6e00ff7a                            bgt          .BegTailH        ;}

                             .EndTailH                                        ;}
                             ;---====== Begin of cycle of getting Y[N+1]..Y[n] (N = (pIIR->iIirCoefCount - 1) / 2)======---
0x000001e0: 2c2a0004                            move.l       4(a2), d6        ;tmp = IIR->iIirCoefCount;

⌨️ 快捷键说明

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