📄 fir32_emac.s.list
字号:
.ENDFORi2 ;
;
;
0x0000022c: 2e2f004c move.l 76(a7),d7 ;d7=n;
0x00000230: 0c8000000004 cmpi.l #4,d0 ;
0x00000236: 6400000a bcc .NMORE3 ;if (N<4) {
0x0000023a: 2200 move.l d0,d1 ;d1=N+1;
0x0000023c: 5281 addq.l #1,d1
0x0000023e: 600000e2 bra .FORi4 ;
.NMORE3 ;}
;
0x00000242: 2200 move.l d0,d1 ;if (N>=4) {
0x00000244: 5881 addq.l #4,d1 ;d1=N+4
.FORi3 ;for (i=d1; i<=n; i+=4){
0x00000246: b287 cmp.l d7,d1 ;
0x00000248: 620000c8 bhi .ENDFORi3 ;
0x0000024c: 2652 move.l (a2),a3 ;pCurCoef=pFIR->pFirCoef;
0x0000024e: 2c6f0044 move.l 68(a7),a6 ;pCurX=pX+i-4;
0x00000252: 43f61cf0 lea (-16,a6,d1.l*4),a1
0x00000256: 4cd10078 movem.l (a1),d3-d6 ;d3=*pCurX++; d4=*pCurX++; d5=*pCurX++; d6=*pCurX; pCurX-=3;
0x0000025a: 2c5b move.l (a3)+,a6 ;a6=*pCurCoef++;
0x0000025c: 2400 move.l d0,d2 ;d2=N%4+4;
0x0000025e: 028200000003 andi.l #3,d2
0x00000264: 5882 addq.l #4,d2
0x00000266: 0c8200000004 cmpi.l #4,d2 ;if (d2=4){
0x0000026c: 66000004 bne .CYCLE_BEGIN2
0x00000270: 5282 addq.l #1,d2 ;d2+=1;
;}
.CYCLE_BEGIN2
;
0x00000272: ac216ade mac.l a6,d6,<<,-(a1),d6,ACC3 ;ACC3+=a6*d6; d6=*--pCurX;
0x00000276: aa0e0ad0 mac.l a6,d5,<<,ACC2 ;ACC2+=a6*d5;
0x0000027a: a88e0ac0 mac.l a6,d4,<<,ACC1 ;ACC1+=a6*d4;
0x0000027e: acdb3ace mac.l a6,d3,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d3; a6=*pCurCoef++;
;
.FORk4 ;for(k=d2; k<=N; k+=4) {
0x00000282: b480 cmp.l d0,d2 ;
0x00000284: 62000046 bhi .ENDFORk4 ;
0x00000288: aa215ade mac.l a6,d5,<<,-(a1),d5,ACC3 ;ACC3+=a6*d5; d5=*--pCurX;
0x0000028c: a80e0ad0 mac.l a6,d4,<<,ACC2 ;ACC2+=a6*d4;
0x00000290: a68e0ac0 mac.l a6,d3,<<,ACC1 ;ACC1+=a6*d3;
0x00000294: acdb6ace mac.l a6,d6,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d6; a6=*pCurCoef++;
0x00000298: a8214ade mac.l a6,d4,<<,-(a1),d4,ACC3 ;ACC3+=a6*d4; d4=*--pCurX;
0x0000029c: a60e0ad0 mac.l a6,d3,<<,ACC2 ;ACC2+=a6*d3;
0x000002a0: ac8e0ac0 mac.l a6,d6,<<,ACC1 ;ACC1+=a6*d6;
0x000002a4: acdb5ace mac.l a6,d5,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d5; a6=*pCurCoef++;
0x000002a8: a6213ade mac.l a6,d3,<<,-(a1),d3,ACC3 ;ACC3+=a6*d3; d3=*--pCurX;
0x000002ac: ac0e0ad0 mac.l a6,d6,<<,ACC2 ;ACC2+=a6*d6;
0x000002b0: aa8e0ac0 mac.l a6,d5,<<,ACC1 ;ACC1+=a6*d5;
0x000002b4: acdb4ace mac.l a6,d4,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d4; a6=*pCurCoef++;
0x000002b8: ac216ade mac.l a6,d6,<<,-(a1),d6,ACC3 ;ACC3+=a6*d6; d6=*--pCurX;
0x000002bc: aa0e0ad0 mac.l a6,d5,<<,ACC2 ;ACC2+=a6*d5;
0x000002c0: a88e0ac0 mac.l a6,d4,<<,ACC1 ;ACC1+=a6*d4;
0x000002c4: acdb3ace mac.l a6,d3,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d3; a6=*pCurCoef++;
0x000002c8: 5882 addq.l #4,d2 ;
0x000002ca: 60b6 bra .FORk4 ;
.ENDFORk4 ;}
0x000002cc: 2400 move.l d0,d2 ;
0x000002ce: 5382 subq.l #1,d2
0x000002d0: 028200000003 andi.l #3,d2
;
.FORk5 ;for(k=(N-1)%4; k>0; k--) {
0x000002d6: 0c8200000000 cmpi.l #0,d2 ;
0x000002dc: 6700001e beq .ENDFORk5 ;
0x000002e0: aa8e0ad0 mac.l a6,d5,<<,ACC3 ;ACC3+=a6*d5;
0x000002e4: a80e0ad0 mac.l a6,d4,<<,ACC2 ;ACC2+=a6*d4;
0x000002e8: a68e0ac0 mac.l a6,d3,<<,ACC1 ;ACC1+=a6*d3;
0x000002ec: acdb6ace mac.l a6,d6,<<,(a3)+,a6,ACC0 ;ACC0+=a6*d6; a6=*pCurCoef++;
0x000002f0: 2a04 move.l d4,d5 ;d5=d4;
0x000002f2: 2803 move.l d3,d4 ;d4=d3;
0x000002f4: 2606 move.l d6,d3 ;d3=d6;
0x000002f6: 2c21 move.l -(a1),d6 ;d6=*--pCurX;
0x000002f8: 5382 subq.l #1,d2 ;
0x000002fa: 60da bra .FORk5 ;
.ENDFORk5 ;}
;
0x000002fc: a1c4 movclr.l ACC0,d4 ;d4=ACC0; ACC0=0;
0x000002fe: 20c4 move.l d4,(a0)+ ;(*pCurY++)=d4;
0x00000300: a3c4 movclr.l ACC1,d4 ;d4=ACC1; ACC1=0;
0x00000302: 20c4 move.l d4,(a0)+ ;(*pCurY++)=d4;
0x00000304: a5c4 movclr.l ACC2,d4 ;d4=ACC2; ACC2=0;
0x00000306: 20c4 move.l d4,(a0)+ ;(*pCurY++)=d4;
0x00000308: a7c4 movclr.l ACC3,d4 ;d4=ACC3; ACC3=0;
0x0000030a: 20c4 move.l d4,(a0)+ ;(*pCurY++)=d4;
0x0000030c: 5881 addq.l #4,d1 ;
0x0000030e: 6000ff36 bra .FORi3 ;
.ENDFORi3 ;}
0x00000312: 2a07 move.l d7,d5 ;d5=(n-N)%4;
0x00000314: 9a80 sub.l d0,d5
0x00000316: 028500000003 andi.l #3,d5
0x0000031c: 2207 move.l d7,d1 ;d1=n-d5+1;
0x0000031e: 9285 sub.l d5,d1
0x00000320: 5281 addq.l #1,d1
;}
;
.FORi4 ;for(i=d1; i<=n; i++) {
0x00000322: b287 cmp.l d7,d1 ;
0x00000324: 62000024 bhi .ENDFORi4 ;
0x00000328: 2c6f0044 move.l 68(a7),a6 ;pCurX=pX+i;
0x0000032c: 43f61c00 lea (0,a6,d1.l*4),a1
0x00000330: 2652 move.l (a2),a3 ;pCurCoef=pFIR->pFirCoef;
0x00000332: 7400 moveq #0,d2 ;for(k=0;k<N;k++) {
0x00000334: 281b move.l (a3)+,d4 ;d4=*pCurCoef++;
.FORk41
0x00000336: 2621 move.l -(a1),d3 ;d3=*--pCurX;
0x00000338: a89b4ac3 mac.l d3,d4,<<,(a3)+,d4,ACC0 ;ACC0+=d3*d4; d4=pCurCoef++;
0x0000033c: 5282 addq.l #1,d2 ;
0x0000033e: b480 cmp.l d0,d2 ;
0x00000340: 65f4 bcs .FORk41 ;
;}
0x00000342: a1c6 movclr.l ACC0,d6 ;d6=ACC0; ACC0=0;
0x00000344: 20c6 move.l d6,(a0)+ ;(*pCurY++)=d6;
0x00000346: 5281 addq.l #1,d1 ;
0x00000348: 60d8 bra .FORi4 ;
.ENDFORi4 ;}
;---====== Begin of History Buffer Loading ======---
0x0000034a: 9e80 sub.l d0,d7
0x0000034c: 2a6f0044 move.l 68(a7),a5
0x00000350: 43f57c04 lea (4,a5,d7.l*4),a1 ;pCurX=pX+N+1;
0x00000354: 286a0008 move.l 8(a2),a4 ;pCurHistory=pFIR->pFirHistory;
0x00000358: 7201 moveq #1,d1 ;for(i=1;i<N;i++)
.FORbuf
0x0000035a: b280 cmp.l d0,d1 ;
0x0000035c: 64000008 bcc .ENDbuf ;
0x00000360: 28d9 move.l (a1)+,(a4)+ ;*pCurHistory++=*pCurX++;
0x00000362: 5281 addq.l #1,d1 ;
0x00000364: 60f4 bra .FORbuf ;
.ENDbuf ;}
0x00000366: 5381 subq.l #1,d1 ;pFIR->iFirHistoryCount=N-1;
0x00000368: 2541000c move.l d1,12(a2) ; }
; ---====== End of History Buffer Loading ======--
;-=Restoring values of used registers=-
0x0000036c: 4feffffc lea -4(a7),a7
0x00000370: 2017 move.l (a7),d0
0x00000372: a900 move.l d0,MACSR
0x00000374: 4fef0004 lea 4(a7),a7
0x00000378: 4cd77fff movem.l (a7),d0-d7/a0-a6 ;
0x0000037c: 4fef003c lea 60(a7),a7
0x00000380: 4e75 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -