?? iir16_mac.s.list
字號:
;-=output+=*pCurHistory--*(*pCurCoef++);=-
0x0000007a: 2624 move.l -(a4),d3 ; -=Getting next current element of history buffer=-
0x0000007c: a8030240 mac.w d3.u,d4.l,<< ; -=First MAC=-
;-=output+=*pCurHistory--*(*pCurCoef++);=-
0x00000080: a89b4283 mac.w d3.l,d4.u,<<,(a3)+,d4 ; -=Second MAC and getting next current coefficient=-
0x00000084: 5282 addq.l #1,d2 ; -=Incrementing "k"=-
0x00000086: 60ec bra .FORk2 ; }
.ENDFORk2 ; }
;---== End of cycle of getting Y[i] ==---
0x00000088: a187 move.l acc,d7 ; *pCurY++=output; -=Moving accumulator to general register=-
;-=we need to transfer only upper word=-
0x0000008a: 4847 swap d7 ; -=Aligning most significant 16 bits of acc=
0x0000008c: 30c7 move.w d7,(a0)+ ; -=Store Y[i]=-
0x0000008e: 5281 addq.l #1,d1 ; i++ -=Incrementing "i"=-
0x00000090: 608c bra .FORi1 ; -=Jumping to .FORi1=-
.ENDFORi1 ; }
;---====== End of cycle Y[1]..Y[N-1] ======---
;---====== Begin of cycle of getting Y[N]..Y[n] ======---
0x00000092: 2200 move.l d0,d1 ; for(i=N;i<=n;i++) -=Begin of outer loop (number 2)=-
.FORi2
0x00000094: b286 cmp.l d6,d1 ; -=Comparing "i" with "N"=-
0x00000096: 62000046 bhi .ENDFORi2 ; { -=If (i>n) then jump to .ENDFORi2=-
0x0000009a: a13c00000000 move.l #0,acc ; output=0; -=Accumulator initialization=-
0x000000a0: 2c6f0044 move.l 68(a7),a6 ; pCurX=pX+i-1; -=Current sample pointer initialization=-
0x000000a4: 43f61a00 lea (0,a6,d1.l*2),a1
0x000000a8: 2c6f0048 move.l 72(a7),a6 ; pPredY=pY+i-2; -=Previous Y pointer initialization
0x000000ac: 4bf61afe lea (-2,a6,d1.l*2),a5
0x000000b0: 2652 move.l (a2),a3 ; pCurCoef=pIIR->pIirCoef; -=Current coefficient pointer initialization=-
;---== Begin of cycle Getting Y[i] ==---
; -=output=*pCurX--*(*pCurCoef++);=-
0x000000b2: 3621 move.w -(a1),d3 ; -=Getting current sample=-
0x000000b4: 381b move.w (a3)+,d4 ; -=Getting current coefficient=-
0x000000b6: a8030200 mac.w d3.l,d4.l,<< ; -=Getting first iteration of inner loop=-
0x000000ba: 7401 moveq #1,d2 ; for(k=1;k<N;k++) -=Begin of inner loop=-
0x000000bc: 281b move.l (a3)+,d4 ; -=Getting next current coefficient=-
.FORk3
0x000000be: b480 cmp.l d0,d2 ; -=Comparing "k" with "N"=-
0x000000c0: 64000012 bcc .ENDFORk3 ; { -=If (k=>N) then jump to .ENDFORk3=-
;-=use move long, parallel filling register,
; predecriment and post increment and use left shifting to get fractional multiplication=-
;-=output+=*pCurX--*(*pCurCoef++);=-
0x000000c4: 3621 move.w -(a1),d3 ; -=Getting next current sample=-
0x000000c6: a8030280 mac.w d3.l,d4.u,<< ; -=First MAC=-
;-=output+=*pPredY--*(*pCurCoef++);=-
0x000000ca: 3625 move.w -(a5),d3 ; -=Getting previous Y=-
0x000000cc: a89b4203 mac.w d3.l,d4.l,<<,(a3)+,d4 ; -=Second MAC and getting next current coefficient=-
0x000000d0: 5282 addq.l #1,d2 ; -=Incrementing "k"=-
0x000000d2: 60ea bra .FORk3 ; -=Jumping to .FORk3=-
.ENDFORk3 ; }
;---== End of cycle of getting Y[i] ==---
0x000000d4: a187 move.l acc,d7 ; *pCurY++=output; -=Moving accumulator to general register=-
;-=we need to transfer only upper word=-
0x000000d6: 4847 swap d7 ; -=Aligning most significant 16 bits of acc=-
0x000000d8: 30c7 move.w d7,(a0)+ ; -=Store Y[i]=-
0x000000da: 5281 addq.l #1,d1 ; i++ -=Incrementing "i"=-
0x000000dc: 60b6 bra .FORi2 ; -=Jumping to .FORi1=-
.ENDFORi2 ; }
;---====== End of cycle Y[N]..Y[n] ======---
;---====== Begin of History Buffer Loading ======---
0x000000de: 2c6f0044 move.l 68(a7),a6 ; -=pCurX=pX+n-N+1;=-
0x000000e2: 2e06 move.l d6,d7
0x000000e4: 9e80 sub.l d0,d7
0x000000e6: 43f67a02 lea (2,a6,d7.l*2),a1
0x000000ea: 2c6f0048 move.l 72(a7),a6 ; pCurY=pY+n-N+1;
0x000000ee: 41f67a02 lea (2,a6,d7.l*2),a0 ;
0x000000f2: 286a0008 move.l 8(a2),a4 ; pCurHistory=pIIR->pIirHistory;
0x000000f6: 7201 moveq #1,d1 ; for(i=1;i<N;i++) -= i=1 =-
.FORbuf
0x000000f8: b280 cmp.l d0,d1 ; -=Comparing "i" with "N"=-
0x000000fa: 6400000e bcc .ENDbuf ; { -=If (i=>N) then jump to .ENDbuf=-
0x000000fe: 2c48 move.l a0,a6 ; *pCurHistory++=*pCurY++;
0x00000100: 5488 addq.l #2,a0
0x00000102: 38d6 move.w (a6),(a4)+
0x00000104: 38d9 move.w (a1)+,(a4)+ ; *pCurHistory++=*pCurX++;
0x00000106: 5281 addq.l #1,d1 ; -=Incrementing "i"=-
0x00000108: 60ee bra .FORbuf ; -=Jumping to .FORbuf=-
.ENDbuf ; }
0x0000010a: 2e2a0004 move.l 4(a2),d7 ; pIIR->iIirHistoryCount=pIIR->iIirCoefCount-1;
0x0000010e: 5387 subq.l #1,d7
0x00000110: 2547000c move.l d7,12(a2) ;}
;---====== End of History Buffer Loading ======--
;-=Restoring values of used registers=-
0x00000114: 4cd77fff movem.l (a7),d0-d7/a0-a6
0x00000118: 4fef003c lea 60(a7),a7
0x0000011c: 4e75 rts
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -