?? fir16_emac.s.list
字號:
0x000001e4: 2e2f004c move.l 76(a7), d7 ;i = n;
0x000001e8: 5386 subq.l #1, d6 ;tmp--;
0x000001ea: 9e86 sub.l d6, d7 ;i -= tmp;
0x000001ec: e487 asr.l #2, d7 ;i /= 4;
0x000001ee: 67000090 beq .BegTail2 ;while(i != 0)
;{
;--==Y[N+1]..Y[k] computation, where k is (N + 1) + ((n - N - 1) % 4)
.BegD4E ;Begin of inner loop
;--== Next input samples loading ==--
0x000001f2: 2410 move.l (a0), d2 ;iCurX0 = pX[0]; iCurX1 = pX[1];
0x000001f4: 26280004 move.l 4(a0), d3 ;iCurX2 = pX[2]; iCurX3 = pX[3];
0x000001f8: 2848 movea.l a0, a4 ;pCurX = pX;
0x000001fa: 41e80008 lea 8(a0), a0 ;pX += 4;
0x000001fe: 264e move.l a6, a3 ;pCurCoef = pIirCoef;
;--== Next coefficient loading ==--
0x00000200: 381b move.w (a3)+, d4 ;iCurA0 = *pCurCoef;
;--== Input samples and first coefficient multiplications ==--
0x00000202: a4040280 mac.w d4.l, d2.u, <<, ACC0 ;iOut0 = iCurA0 * iCurX0
0x00000206: a4840200 mac.w d4.l, d2.l, <<, ACC1 ;iOut1 = iCurA0 * iCurX1
0x0000020a: a6040290 mac.w d4.l, d3.u, <<, ACC2 ;iOut2 = iCurA0 * iCurX2
0x0000020e: a6840210 mac.w d4.l, d3.l, <<, ACC3 ;iOut3 = iCurA0 * iCurX3
;--== The count of inner loops calculation ==--
0x00000212: 2a06 move.l d6, d5 ;j = tmp
0x00000214: 08050000 btst #0, d5 ;
0x00000218: 67000022 beq .ForIn1EBeg ;if(j & 1)
;{
;--== This multiplications executed only when j is odd ==--
;--== Next coefficient loading ==--
0x0000021c: 381b move.w (a3)+, d4 ;iCurA0 = *pCurCoef++;
0x0000021e: 3602 move.w d2, d3 ;iCurX3 = iCurX2;
0x00000220: 3424 move.w -(a4), d2 ;iCurX2 = iCurX1;
0x00000222: 4842 swap d2 ;iCurX1 = iCurX0;
0x00000224: 4843 swap d3 ;iCurX0 = *--pCurHistory;
0x00000226: a4040280 mac.w d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
0x0000022a: a4840200 mac.w d4.l, d2.l, <<, ACC1 ;iOut1 += iCurA0 * iCurX1
0x0000022e: a6040290 mac.w d4.l, d3.u, <<, ACC2 ;iOut2 += iCurA0 * iCurX2
0x00000232: a6840210 mac.w d4.l, d3.l, <<, ACC3 ;iOut3 += iCurA0 * iCurX3
0x00000236: 5385 subq.l #1, d5 ;j -= 1;
0x00000238: 67000030 beq .EndIn1E ;}
.ForIn1EBeg
;--== Next coefficients loading ==--
0x0000023c: 281b move.l (a3)+, d4 ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;
.ForIn1E
0x0000023e: 5585 subq.l #2, d5 ;for(;j >= 0; j -=2)
0x00000240: 6d000028 blt .EndIn1E ;{
;--== Three first input samples and coefficients multiplication ==--
0x00000244: a48402c0 mac.w d4.u, d2.u, <<, ACC1 ;iOut1 += iCurA0 * iCurX0
0x00000248: a4040250 mac.w d4.u, d2.l, <<, ACC2 ;iOut2 += iCurA0 * iCurX1
0x0000024c: a68402d0 mac.w d4.u, d3.u, <<, ACC3 ;iOut3 += iCurA0 * iCurX2
;--== Loading two next input samples ==--
0x00000250: 2602 move.l d2, d3 ;iCurX3 = iCurX1; iCurX2 = iCurX0;
0x00000252: 2424 move.l -(a4), d2 ;iCurX1 = *--pCurX; iCurX0 = *--pCurX;
;--== Fourth input sample and coefficient multiplication ==--
0x00000254: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX1
;--== Next Four input sample and coefficients multiplication ==--
0x00000258: a4040280 mac.w d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA1 * iCurX0
0x0000025c: a4840200 mac.w d4.l, d2.l, <<, ACC1 ;iOut1 += iCurA1 * iCurX1
0x00000260: a6040290 mac.w d4.l, d3.u, <<, ACC2 ;iOut2 += iCurA1 * iCurX2
;--== Last mac instruction with next coefficients loading ==--
0x00000264: a81b3214 mac.w d4.l, d3.l, <<, (a3)+, d4, ACC3 ;iOut3 += iCurA1 * iCurX3
;iCurA0 = *pCurCoef++;iCurA1 = *pCurCoef++;
0x00000268: 60d4 bra .ForIn1E ;}
.EndIn1E
;--==Storing computed samples into the memory==--
0x0000026a: a1c0 movclr.l ACC0, d0 ;*pY++ = iOut0
;#ifndef __FRACT_M
; swap d0 ;
;#endif
0x0000026c: 32c0 move.w d0, (a1)+ ;
0x0000026e: a3c0 movclr.l ACC1, d0 ;*pY++ = iOut1
;#ifndef __FRACT_M
; swap d0 ;
;#endif
0x00000270: 32c0 move.w d0, (a1)+ ;
0x00000272: a5c2 movclr.l ACC2, d2 ;*pY++ = iOut2
;#ifndef __FRACT_M
; swap d2 ;
;#endif
0x00000274: 32c2 move.w d2, (a1)+ ;
0x00000276: a7c0 movclr.l ACC3, d0 ;*pY++ = iOut3
;#ifndef __FRACT_M
; swap d0 ;
;#endif
0x00000278: 32c0 move.w d0, (a1)+ ;
0x0000027a: 5387 subq.l #1, d7 ;i --;
0x0000027c: 6600ff74 bne .BegD4E ;}
.EndD4E
;---=Computation of N % 4 last output samples==--
.BegTail2
0x00000280: 2c2a0004 move.l 4(a2), d6 ;tmp = IIR->iIirCoefCount;
0x00000284: 2e2f004c move.l 76(a7), d7 ;i = n;
0x00000288: 5386 subq.l #1, d6 ;tmp--;
0x0000028a: 9e86 sub.l d6, d7 ;i -= tmp;
0x0000028c: 028700000003 andi.l #3, d7 ;i &= 3;
0x00000292: 67000046 beq .EndTail2 ;while(i)
;{
.BegOutTail2
;--== Next input samples loading ==--
0x00000296: 3410 move.w (a0), d2 ;iCurX0 = *pX;
0x00000298: 2848 movea.l a0, a4 ;pCurX = pX;
0x0000029a: 41e80002 lea 2(a0), a0 ;pX++;
0x0000029e: 264e move.l a6, a3 ;pCurCoef = pIirCoef;
;--== Next coefficient loading ==--
0x000002a0: 2813 move.l (a3), d4 ;iCurA0 = *pCurCoef;
0x000002a2: 47eb0002 lea 2(a3), a3 ;pCurCoef++;
;--== Input samples and first coefficient multiplications ==--
0x000002a6: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
;--== The count of inner loops calculation ==--
0x000002aa: 2a06 move.l d6, d5 ;j = tmp;
0x000002ac: 08050000 btst.l #0, d5
0x000002b0: 67000010 beq .ForInTail2
;--== This part is executed only if j is odd ==--
;--== Next coefficients loading ==--
0x000002b4: 381b move.w (a3)+, d4 ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;
;--== Next input samples loading ==--
0x000002b6: 3424 move.w -(a4), d2 ;iCurX = *--pCurX;
0x000002b8: a4040200 mac.w d4.l, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
0x000002bc: 5385 subq.l #1, d5
0x000002be: 67000012 beq .EndInTail2
.ForInTail2 ;do{
;--== Next coefficients loading ==--
0x000002c2: 281b move.l (a3)+, d4 ;iCurA0 = *pCurCoef++; iCurA1 = *pCurCoef++;
;--== Next input samples loading ==--
0x000002c4: 2424 move.l -(a4), d2 ;iCurX0 = *--pCurX;iCurX1 = *--pCurX;
;--== Two multiplications for each output sample ==--
0x000002c6: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA0 * iCurX0
0x000002ca: a4040280 mac.w d4.l, d2.u, <<, ACC0 ;iOut0 += iCurA1 * iCurX1
0x000002ce: 5585 subq.l #2, d5 ;j--;
0x000002d0: 66f0 bne .ForInTail2 ;}while(j);
.EndInTail2
;--==Storing computed sample into the memory==--
0x000002d2: a1c0 movclr.l ACC0, d0 ;*pY++ = iOut0;
;#ifndef __FRACT_M
; swap d0 ;
;#endif
0x000002d4: 32c0 move.w d0, (a1)+ ;
0x000002d6: 5387 subq.l #1, d7 ;i--;
0x000002d8: 66bc bne .BegOutTail2 ;}
.EndTail2
;--==Filling history buffer==--
0x000002da: 266a0008 move.l 8(a2), a3 ;pCurHistory = IIR->pIirHistory;
0x000002de: 202a0004 move.l 4(a2), d0 ;i = IIR->iIirCoefCount;
0x000002e2: 5380 subq.l #1, d0 ;i--;
0x000002e4: 2540000c move.l d0, 12(a2) ;IIR->iIirHistoryCount = i;
0x000002e8: d7c0 adda.l d0, a3 ;pCurHistory += i;
0x000002ea: d7c0 adda.l d0, a3 ;
;do{
.NextHist
0x000002ec: 3720 move.w -(a0), -(a3) ;*--pCurHistory = *--pX;
0x000002ee: 5380 subq.l #1, d0 ;i ++;
0x000002f0: 66fa bne .NextHist ;}while(i);
;--==Restoring old MAC status register==--
0x000002f2: a901 move.l d1, MACSR
0x000002f4: 4cd77fff movem.l (a7), d0-d7/a0-a6
0x000002f8: 4fef003c lea 60(a7), a7
0x000002fc: 4e75 rts
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -