📄 iir32_mac.s.list
字号:
;-=output+=*pCurHistory--*(*pCurCoef++);=-
0x0000007e: 2624 move.l -(a4),d3 ; -=Getting next current element of history buffer=-
0x00000080: a89b4ac3 mac.l d3,d4,<<,(a3)+,d4 ; -=First MAC and getting next current coefficient=-
;-=output+=*pCurHistory--*(*pCurCoef++);=-
0x00000084: 2624 move.l -(a4),d3 ; -=Getting next current element of history buffer=-
0x00000086: a89b4ac3 mac.l d3,d4,<<,(a3)+,d4 ; -=Second MAC and getting next current coefficient=-
0x0000008a: 5282 addq.l #1,d2 ; -=Incrementing "k"=-
0x0000008c: 60ea bra .FORk2 ; }
.ENDFORk2 ; }
;---== End of cycle of getting Y[i] ==---
0x0000008e: a187 move.l acc,d7 ; *pCurY++=output; -=Moving accumulator to general register=-
0x00000090: 20c7 move.l d7,(a0)+ ; -=Store Y[i]=-
0x00000092: 5281 addq.l #1,d1 ; -=Incrementing "i"=-
0x00000094: 608c bra .FORi1 ; -=Jumping to .FORi1=-
.ENDFORi1 ; }
;---====== End of cycle Y[1]..Y[N-1] ======---
;---====== Begin of cycle of getting Y[N]..Y[n] ======---
0x00000096: 2200 move.l d0,d1 ; for(i=N;i<=n;i++) To get Y[N]..Y[n] -=Begin of outer loop (number 2)=-
.FORi2
0x00000098: b286 cmp.l d6,d1 ; -=Comparing "i" with "N"=-
0x0000009a: 62000044 bhi .ENDFORi2 ; { -=If (i>n) then jump to .ENDFORi2=-
0x0000009e: a13c00000000 move.l #0,acc ; -=Accumulator initialization=-
0x000000a4: 2c6f0044 move.l 68(a7),a6 ; pCurX=pX+i-1; -=Current sample pointer initialization=-
0x000000a8: 43f61c00 lea (0,a6,d1.l*4),a1
0x000000ac: 2c6f0048 move.l 72(a7),a6 ; pPredY=pY+i-2; -=Previous Y pointer initialization
0x000000b0: 4bf61cfc lea (-4,a6,d1.l*4),a5
0x000000b4: 2652 move.l (a2),a3 ; pCurCoef=pIIR->pIirCoef; -=Current coefficient pointer initialization=-
;---== Begin of cycle Getting Y[i] ==---
; -=output=*pCurX--*(*pCurCoef++);=-
0x000000b6: 2621 move.l -(a1),d3 ; -=Getting current sample=-
0x000000b8: 281b move.l (a3)+,d4 ; -=Getting current coefficient=-
0x000000ba: a8030ac0 mac.l d3,d4,<< ; -=Getting first iteration of inner loop=-
0x000000be: 7401 moveq #1,d2 ; for(k=1;k<N;k++) -=Begin of inner loop=-
0x000000c0: 281b move.l (a3)+,d4 ; -=Getting next current coefficient=-
.FORk3
0x000000c2: b480 cmp.l d0,d2 ; -=Comparing "k" with "N"=-
0x000000c4: 64000012 bcc .ENDFORk3 ; { -=If (k=>N) then jump to .ENDFORk3=-
;-=output+=*pCurX--*(*pCurCoef++);=-
0x000000c8: 2621 move.l -(a1),d3 ; -=Getting next current sample=-
0x000000ca: a89b4ac3 mac.l d3,d4,<<,(a3)+,d4 ; -=First MAC and getting next current coefficient=-
;-=output+=*pPredY--*(*pCurCoef++);=-
0x000000ce: 2625 move.l -(a5),d3 ; -=Getting previous Y=-
0x000000d0: a89b4ac3 mac.l d3,d4,<<,(a3)+,d4 ; -=Second MAC and getting next current coefficient=-
0x000000d4: 5282 addq.l #1,d2 ; -=Incrementing "k"=-
0x000000d6: 60ea bra .FORk3 ; -=Jumping to .FORk3=-
.ENDFORk3 ; }
;---== End of cycle of getting Y[i] ==---
0x000000d8: a187 move.l acc,d7 ; *pCurY++=output; -=Moving accumulator to general register=-
0x000000da: 20c7 move.l d7,(a0)+ ; -=Store Y[i]=-
0x000000dc: 5281 addq.l #1,d1 ; -=Incrementing "i"=-
0x000000de: 60b8 bra .FORi2 ; -=Jumping to .FORi1=-
.ENDFORi2 ; }
;---====== End of cycle Y[N]..Y[n] ======---
;---====== Begin of History Buffer Loading ======---
0x000000e0: 2c6f0044 move.l 68(a7),a6 ; -=pCurX=pX+n-N+1;=-
0x000000e4: 2e06 move.l d6,d7
0x000000e6: 9e80 sub.l d0,d7
0x000000e8: 43f67c04 lea (4,a6,d7.l*4),a1
0x000000ec: 2c6f0048 move.l 72(a7),a6 ; pCurY=pY+n-N+1;
0x000000f0: 41f67c04 lea (4,a6,d7.l*4),a0 ;
0x000000f4: 286a0008 move.l 8(a2),a4 ; pCurHistory=pIIR->pIirHistory;
0x000000f8: 7201 moveq #1,d1 ; for(i=1;i<N;i++) -= i=1 =-
.FORbuf
0x000000fa: b280 cmp.l d0,d1 ; -=Comparing "i" with "N"=-
0x000000fc: 6400000e bcc .ENDbuf ; { -=If (i=>N) then jump to .ENDbuf=-
0x00000100: 2c48 move.l a0,a6 ; *pCurHistory++=*pCurY++;
0x00000102: 5888 addq.l #4,a0
0x00000104: 28d6 move.l (a6),(a4)+
0x00000106: 28d9 move.l (a1)+,(a4)+ ; *pCurHistory++=*pCurX++;
0x00000108: 5281 addq.l #1,d1 ; -=Incrementing "i"=-
0x0000010a: 60ee bra .FORbuf ; -=Jumping to .FORbuf=-
.ENDbuf ; }
0x0000010c: 2e2a0004 move.l 4(a2),d7 ; pIIR->iIirHistoryCount=pIIR->iIirCoefCount-1;
0x00000110: 5387 subq.l #1,d7
0x00000112: 2547000c move.l d7,12(a2) ; -=setting pFIR->iFirHistoryCount by pIIR->iIirCoefCount-1 =-
; ---====== End of History Buffer Loading ======--
;-=Restoring values of used registers=-
0x00000116: 4cd77fff movem.l (a7),d0-d7/a0-a6 ; }
0x0000011a: 4fef003c lea 60(a7),a7
0x0000011e: 4e75 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -