📄 iir16_emac.s.list
字号:
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 + -