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

📄 iir16_emac.s.list

📁 freescale MAC DSP的算法库(FFT
💻 LIST
📖 第 1 页 / 共 4 页
字号:

                             .EndIn1C                                         
                             ;--== Correcting pointer to coefficients after inner loop ==--
0x000000d2: 47ebfffc                            lea          -4(a3), a3       ;pCurCoef -= 4

                             .EndIn1                                          

0x000000d6: 2a2a000c                            move.l       12(a2), d5       ;if(pIIR->iIirHistoryCount)
                             ;---=Computation using history buffer==--
0x000000da: 670000b6                            beq          .BegNoHistory    ;{
                             ;--== The count of inner loops calculation ==-- 
0x000000de: 2a07                                move.l       d7, d5           ;
0x000000e0: 5085                                addq.l       #8, d5           ;j = i + 8;
0x000000e2: 6f0000aa                            ble          .EndInH          ;if(j > 0)
                                                                              ;{
                             ;--== Setting curent history buffer pointer ==--
0x000000e6: 286a0008                            move.l       8(a2), a4        ;
0x000000ea: d9c6                                adda.l       d6, a4           ;
0x000000ec: d9c6                                adda.l       d6, a4           ;pCurHistory = pIIR->pIirHistory + tmp * 2;

0x000000ee: 5285                                addq.l       #1, d5           ;
0x000000f0: 08050001                            btst         #1, d5           ;if((j + 1) & 2)
0x000000f4: 6700003c                            beq          .ForInHBeg       ;{
                             ;--== This part is executed only if (j + 1)/2 is odd ==--	

0x000000f8: 5385                                subq.l       #1, d5           

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

                             ;--== Next input sample loading	from history buffer==--
0x000000fc: 3602                                move.w       d2, d3           ;iCurX3 = iCurX2;
0x000000fe: 3424                                move.w       -(a4), d2        ;iCurX2 = iCurX1
0x00000100: 4842                                swap         d2               ;iCurX1 = iCurX0
0x00000102: 4843                                swap         d3               ;iCurX0 = *--pCurHistory;

                             ;--== Next output sample loading from history buffer==--
0x00000104: 3200                                move.w       d0, d1           ;iCurY3 = iCurY2;
0x00000106: 3024                                move.w       -(a4), d0        ;iCurY2 = iCurY1;
0x00000108: 4840                                swap         d0               ;iCurY1 = iCurY0;
0x0000010a: 4841                                swap         d1               ;iCurY0 = *--pCurHistory;

0x0000010c: a40402c0                            mac.w        d4.u, d2.u, <<, ACC0 ;iOut0 += iCurA * iCurX0;
0x00000110: a4840240                            mac.w        d4.u, d2.l, <<, ACC1 ;iOut1 += iCurA * iCurX1;
0x00000114: a60402d0                            mac.w        d4.u, d3.u, <<, ACC2 ;iOut2 += iCurA * iCurX2;
0x00000118: a6840250                            mac.w        d4.u, d3.l, <<, ACC3 ;iOut3 += iCurA * iCurX3;

0x0000011c: a0040280                            mac.w        d4.l, d0.u, <<, ACC0 ;iOut0 += iCurB * iCurY0;
0x00000120: a0840200                            mac.w        d4.l, d0.l, <<, ACC1 ;iOut1 += iCurB * iCurY1;
0x00000124: a2040290                            mac.w        d4.l, d1.u, <<, ACC2 ;iOut2 += iCurB * iCurY2;
0x00000128: a2840210                            mac.w        d4.l, d1.l, <<, ACC3 ;iOut3 += iCurB * iCurY3;

0x0000012c: 5585                                subq.l       #2, d5           ;j -= 2;
0x0000012e: 6f00005e                            ble          .EndInH          ;}
                                                                              ;while(j > 0)
                                                                              ;{

                             .ForInHBeg                                       
0x00000132: 5385                                subq.l       #1, d5           
                             ;--== Next coefficients loading	==--
0x00000134: 281b                                move.l       (a3)+, d4        ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;
                             .ForInH                                          

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

                             ;--== Three first output samples and coefficients multiplication ==--
0x00000142: a0840280                            mac.w        d4.l, d0.u, <<, ACC1 ;iOut1 += iCurB * iCurY0
0x00000146: a0040210                            mac.w        d4.l, d0.l, <<, ACC2 ;iOut2 += iCurB * iCurY1
0x0000014a: a2840290                            mac.w        d4.l, d1.u, <<, ACC3 ;iOut3 += iCurB * iCurY2


                             ;--== Loading two next input samples ==--	
0x0000014e: 2602                                move.l       d2, d3           ;iCurX3 = iCurX1; 	iCurX2 = iCurX0;
0x00000150: 2424                                move.l       -(a4), d2        ;iCurX1 = *--pCurHistory; iCurX0 = *--pCurHistory;
                             ;--== Loading two next output samples ==--	
0x00000152: 2200                                move.l       d0, d1           ;iCurY3 = iCurY1; 	iCurY2 = iCurY0;
0x00000154: 2024                                move.l       -(a4), d0        ;iCurY1 = *--pCurHistory; iCurY0 = *--pCurHistory;


                             ;--== Fourth input sample and coefficient multiplication ==--
0x00000156: a4040240                            mac.w        d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX0
                             ;--== Fourth output sample and coefficient multiplication ==--
0x0000015a: a4040280                            mac.w        d4.l, d2.u, <<, ACC0 ;iOut0 += iCurB * iCurY0
                             ;--== Correcting input and output samples loaded from history buffer ==--	
0x0000015e: 4842                                swap         d2               ;
0x00000160: 3802                                move.w       d2, d4           ;
0x00000162: 3400                                move.w       d0, d2           ;
0x00000164: 3004                                move.w       d4, d0           ;
0x00000166: 4842                                swap         d2               ;

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

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

                             ;--== Next Four output sample and coefficients multiplication ==--
0x0000017a: a0040280                            mac.w        d4.l, d0.u, <<, ACC0 ;iOut0 += iCurB * iCurY0
0x0000017e: a0840200                            mac.w        d4.l, d0.l, <<, ACC1 ;iOut1 += iCurB * iCurY1
0x00000182: a2040290                            mac.w        d4.l, d1.u, <<, ACC2 ;iOut2 += iCurB * iCurY2
0x00000186: a81b1214                            mac.w        d4.l, d1.l, <<, (a3)+, d4, ACC3 ;iOut3 += iCurB * iCurY3
                                                                              ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;

0x0000018a: 5985                                subq.l       #4, d5           ;j -= 4;
0x0000018c: 6ea8                                bgt          .ForInH          ;}

                             .EndInH                                          
0x0000018e: 60000038                            bra          .EndH            ;}
                                                                              ;else{
                             .BegNoHistory                                    
                             ;---=Final computations if history buffer is void==--
                             ;--== Next coefficients loading	==--
0x00000192: 281b                                move.l       (a3)+, d4        ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;

0x00000194: a48402c0                            mac.w        d4.u, d2.u, <<, ACC1 ;iOut1 += iCurA * iCurX1
0x00000198: a4040250                            mac.w        d4.u, d2.l, <<, ACC2 ;iOut2 += iCurA * iCurX2
0x0000019c: a68402d0                            mac.w        d4.u, d3.u, <<, ACC3 ;iOut3 += iCurA * iCurX3

0x000001a0: a0840280                            mac.w        d4.l, d0.u, <<, ACC1 ;iOut1 += iCurB * iCurY1
0x000001a4: a0040210                            mac.w        d4.l, d0.l, <<, ACC2 ;iOut2 += iCurB * iCurY2
0x000001a8: a2840290                            mac.w        d4.l, d1.u, <<, ACC3 ;iOut3 += iCurB * iCurY3

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

0x000001ae: a40402d0                            mac.w        d4.u, d2.u, <<, ACC2 ;iOut2 += iCurA * iCurX2
0x000001b2: a4840250                            mac.w        d4.u, d2.l, <<, ACC3 ;iOut3 += iCurA * iCurX3

0x000001b6: a0040290                            mac.w        d4.l, d0.u, <<, ACC2 ;iOut2 += iCurB * iCurY2
0x000001ba: a0840210                            mac.w        d4.l, d0.l, <<, ACC3 ;iOut3 += iCurB * iCurY3

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

0x000001c0: a48402d0                            mac.w        d4.u, d2.u, <<, ACC3 ;iOut3 += iCurA * iCurX3

0x000001c4: a0840290                            mac.w        d4.l, d0.u, <<, ACC3 ;iOut3 += iCurB * iCurY3
                                                                              ;} 

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

0x000001c8: 264e                                move.l       a6, a3           ;pCurCoef = pIirCoef
0x000001ca: 282b0004                            move.l       4(a3), d4        ;pCurB = pIirCoef[2];
0x000001ce: 382b0008                            move.w       8(a3), d4        ;pCurA = pIirCoef[4];
0x000001d2: 2a2b000c                            move.l       12(a3), d5       ;j = pIirCoef[6];

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

0x000001da: a0840240                            mac.w        d4.u, d0.l, <<, ACC1 ;iOut1 += iOut0 * pCurB

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

0x000001e2: a2040250                            mac.w        d4.u, d1.l, <<, ACC2 ;iOut2 += iOut1 * pCurA
0x000001e6: a0040210                            mac.w        d4.l, d0.l, <<, ACC2 ;iOut2 += iOut0 * pCurB

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

0x000001ee: a4840250                            mac.w        d4.u, d2.l, <<, ACC3 ;iOut3 += iOut2 * pCurA
0x000001f2: a2840210                            mac.w        d4.l, d1.l, <<, ACC3 ;iOut3 += iOut1 * pCurB
0x000001f6: a0850250                            mac.w        d5.u, d0.l, <<, ACC3 ;iOut3 += iOut0 * j

0x000001fa: a7c0                                movclr.l     ACC3, d0         ;
                             ;#ifndef __FRACT_M	
                             ;	swap	d0						;*pY++ = iOut3
                             ;#endif	
0x000001fc: 32c0                                move.w       d0, (a1)+        ;
0x000001fe: 5187                                subq.l       #8, d7           ;i -= 8;
0x00000200: 6e00fe4c                            bgt          .BegD4           ;}while(i > 0);

0x00000204: 6000000c                            bra          .EndD4           
                             .EndD4Z                                          

0x00000208: 2e06                                move.l       d6, d7           ;

⌨️ 快捷键说明

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