?? iir16_emac.s.list
字號:
.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 + -