?? iir16_emac.s.list
字號:
0x0000020a: 6700006c beq .EndTailH ;
0x0000020e: 60000008 bra .BegTailH ;
.EndD4
0x00000212: 5087 addq.l #8, d7 ; i += 8;
0x00000214: 67000062 beq .EndTailH ;while(i)
;{
;---=Computation of N % 4 last output samples==--
.BegTailH
;--== Next input samples loading ==--
0x00000218: 3410 move.w (a0), d2 ;iCurX0 = *pX;
0x0000021a: 2848 movea.l a0, a4 ;pCurX = pX;
0x0000021c: 41e80002 lea 2(a0), a0 ;pX++;
;--== Setting output samples pointer ==--
0x00000220: 2a49 movea.l a1, a5 ;pCurY = pY;
;--== Next coefficients loading ==--
0x00000222: 264e move.l a6, a3 ;pCurCoef = pIirCoef;
0x00000224: 2813 move.l (a3), d4 ;iCurA = *pCurCoef;
0x00000226: 47eb0002 lea 2(a3), a3 ;pCurCoef++;
;--== Input samples and first coefficient multiplications ==--
0x0000022a: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 = iCurA * iCurX0
;--== The count of inner loops calculation ==--
0x0000022e: 2a06 move.l d6, d5 ;
0x00000230: 9a87 sub.l d7, d5 ;j = tmp - i;
0x00000232: 6f000014 ble .EndIn1TailH ;while(j > 0)
;{
.ForIn1TailH
;--== Next coefficients loading ==--
0x00000236: 281b move.l (a3)+, d4 ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;
;--== Next input sample loading ==--
0x00000238: 3424 move.w -(a4), d2 ;iCurX0 = *--pCurX;
;--== Next output sample loading ==--
0x0000023a: 3025 move.w -(a5), d0 ;iCurY0 = *--pCurY;
;--== Two multiplications for each output sample ==--
0x0000023c: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX0
0x00000240: a0040200 mac.w d4.l, d0.l, <<, ACC0 ;iOut0 += iCurB * iCurY0
0x00000244: 5585 subq.l #2, d5 ;j-= 2;
0x00000246: 6eee bgt .ForIn1TailH ;}
.EndIn1TailH
0x00000248: 2a2a000c move.l 12(a2), d5 ;if(pIIR->iIirHistoryCount)
0x0000024c: 67000022 beq .EndInHTail ;{
;--== The count of inner loops calculation ==--
0x00000250: 2a07 move.l d7, d5 ;j = i
0x00000252: 6f00001c ble .EndInHTail ;if(j > 0)
;{
;--== Current history buffer pointer initialization==--
0x00000256: 286a0008 move.l 8(a2), a4 ;pCurHustory = pIirHistory + tmp * 2
0x0000025a: d9c6 adda.l d6, a4 ;
0x0000025c: d9c6 adda.l d6, a4 ;while(j > 0)
;{
.ForInHTail
;--== Next coefficients loading ==--
0x0000025e: 281b move.l (a3)+, d4 ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;
;--== Next input sample loading ==--
0x00000260: 3424 move.w -(a4), d2 ;iCurX0 = *--pCurHistory;
;--== Next output sample loading ==--
0x00000262: 3024 move.w -(a4), d0 ;iCurY0 = *--pCurHistory;
;--== Two multiplications for each output sample ==--
0x00000264: a4040240 mac.w d4.u, d2.l, <<, ACC0 ;iOut0 += iCurA * iCurX0
0x00000268: a0040200 mac.w d4.l, d0.l, <<, ACC0 ;iOut0 += iCurB * iCurY0
0x0000026c: 5585 subq.l #2, d5 ;j -= 2;
0x0000026e: 6eee bgt .ForInHTail ;}
.EndInHTail ;}
;--==Storing computed sample into the memory==--
0x00000270: a1c0 movclr.l ACC0, d0 ;
;#ifndef __FRACT_M
; swap d0 ;*pY++ = iOut0;
;#endif
0x00000272: 32c0 move.w d0, (a1)+ ;
0x00000274: 5587 subq.l #2, d7 ;i -= 2;
0x00000276: 6ea0 bgt .BegTailH ;}
.EndTailH ;}
;---====== Begin of cycle of getting Y[N+1]..Y[n] (N = (pIIR->iIirCoefCount - 1) / 2)======---
0x00000278: 2c2a0004 move.l 4(a2), d6 ;tmp = IIR->iIirCoefCount;
0x0000027c: 2e2f0050 move.l 80(a7), d7 ;i = n;
0x00000280: 5386 subq.l #1, d6 ;tmp = (tmp - 1) / 2;
0x00000282: e286 asr.l #1, d6 ;
0x00000284: 9e86 sub.l d6, d7 ;i -= tmp;
0x00000286: e487 asr.l #2, d7 ; i /= 4
0x00000288: 6700013c 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 ==--
0x0000028c: 2410 move.l (a0), d2 ;iCurX0 = pX[0]; iCurX1 = pX[1];
0x0000028e: 26280004 move.l 4(a0), d3 ;iCurX2 = pX[2]; iCurX3 = pX[3];
0x00000292: 2848 movea.l a0, a4 ;pCurX = pX;
0x00000294: 41e80008 lea 8(a0), a0 ;pX += 4;
;--== Make four previous output samples zero==--
0x00000298: 4280 clr.l d0 ;iCurY0 = iCurY1 = 0;
0x0000029a: 4281 clr.l d1 ;iCurY2 = iCurY3 = 0;
0x0000029c: 2a49 movea.l a1, a5 ;pCurY = pY;
;--== Next coefficient loading ==--
0x0000029e: 264e move.l a6, a3 ;pCurCoef = pIirCoef;
0x000002a0: 2813 move.l (a3), d4 ;iCurA = *pCurCoef;
0x000002a2: 47eb0002 lea 2(a3), a3 ;pCurCoef++;
;--== Input samples and first coefficient multiplications ==--
0x000002a6: a40402c0 mac.w d4.u, d2.u, <<, ACC0 ;iOut0 = iCurA * iCurX0
0x000002aa: a4840240 mac.w d4.u, d2.l, <<, ACC1 ;iOut1 = iCurA * iCurX1
0x000002ae: a60402d0 mac.w d4.u, d3.u, <<, ACC2 ;iOut2 = iCurA * iCurX2
0x000002b2: a6840250 mac.w d4.u, d3.l, <<, ACC3 ;iOut3 = iCurA * iCurX3
;--== The count of inner loops calculation ==--
0x000002b6: 2a06 move.l d6, d5 ;
0x000002b8: 08050000 btst #0, d5 ;j = tmp - i - 8;
0x000002bc: 6700003a beq .ForIn1EBeg ;if(j & 1)
;{
;--== This multiplications executed only when j is odd ==--
;--== Next coefficient loading ==--
0x000002c0: 281b move.l (a3)+, d4 ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;
;--== Next input sample loading ==--
0x000002c2: 3602 move.w d2, d3 ;iCurX3 = iCurX2;
0x000002c4: 3424 move.w -(a4), d2 ;iCurX2 = iCurX1;
0x000002c6: 4842 swap d2 ;iCurX1 = iCurX0;
0x000002c8: 4843 swap d3 ;iCurX0 = *--pCurHistory;
;--== Next output sample loading ==--
0x000002ca: 3200 move.w d0, d1 ;iCurY3 = iCurY2;
0x000002cc: 3025 move.w -(a5), d0 ;iCurY2 = iCurY1;
0x000002ce: 4840 swap d0 ;iCurY1 = iCurY0;
0x000002d0: 4841 swap d1 ;iCurY0 = *--pCurHistory;
0x000002d2: a40402c0 mac.w d4.u, d2.u, <<, ACC0 ;iOut0 += iCurA * iCurX0
0x000002d6: a4840240 mac.w d4.u, d2.l, <<, ACC1 ;iOut1 += iCurA * iCurX1
0x000002da: a60402d0 mac.w d4.u, d3.u, <<, ACC2 ;iOut2 += iCurA * iCurX2
0x000002de: a6840250 mac.w d4.u, d3.l, <<, ACC3 ;iOut3 += iCurA * iCurX3
0x000002e2: a0040280 mac.w d4.l, d0.u, <<, ACC0 ;iOut0 += iCurB * iCurY0
0x000002e6: a0840200 mac.w d4.l, d0.l, <<, ACC1 ;iOut1 += iCurB * iCurY1
0x000002ea: a2040290 mac.w d4.l, d1.u, <<, ACC2 ;iOut2 += iCurB * iCurY2
0x000002ee: a2840210 mac.w d4.l, d1.l, <<, ACC3 ;iOut3 += iCurB * iCurY3
0x000002f2: 5385 subq.l #1, d5 ;j -= 2;
0x000002f4: 67000056 beq .EndIn1E ;}
.ForIn1EBeg
;--== Next coefficients loading ==--
0x000002f8: 281b move.l (a3)+, d4 ;iCurA = *pCurCoef++; iCurB = *pCurCoef++;
.ForIn1E
0x000002fa: 5585 subq.l #2, d5 ;for(;j >= 0; j -=2)
0x000002fc: 6d00004e blt .EndIn1E ;{
;--== Three first input samples and coefficients multiplication ==--
0x00000300: a48402c0 mac.w d4.u, d2.u, <<, ACC1 ;iOut1 += iCurA * iCurX0
0x00000304: a4040250 mac.w d4.u, d2.l, <<, ACC2 ;iOut2 += iCurA * iCurX1
0x00000308: a68402d0 mac.w d4.u, d3.u, <<, ACC3 ;iOut3 += iCurA * iCurX2
;--== Three first output samples and coefficients multiplication ==--
0x0000030c: a0840280 mac.w d4.l, d0.u, <<, ACC1 ;iOut1 += iCurB * iCurY0
0x00000310: a0040210 mac.w d4.l, d0.l, <<, ACC2 ;iOut2 += iCurB * iCurY1
0x00000314: a2840290 mac.w d4.l, d1.u, <<, ACC3 ;iOut3 += iCurB * iCurY2
;--== Loading two next input samples ==--
0x00000318: 2602 move.l d2, d3 ;iCurX3 = iCurX1; iCurX2 = iCurX0;
0x0000031a: 2424 move.l -(a4), d2 ;iCurX1 = *--pCurX; iCurX0 = *--pCurX;
;--== Loading two next output samples ==--
0x0000031c: 2200 move.l d0, d1 ;iCurY3 = iCurY1; iCurY2 = iCurY0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -