亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fir32_emac.s

?? freescale MAC DSP的算法庫(FFT
?? S
?? 第 1 頁 / 共 2 頁
字號:
;************************************************************************
;*
;* Copyright:
;*	Freescale Semiconductor, INC. All Rights Reserved.  
;*  You are hereby granted a copyright license to use, modify, and
;*  distribute the SOFTWARE so long as this entire notice is
;*  retained without alteration in any modified and/or redistributed
;*  versions, and that such modified versions are clearly identified
;*  as such. No licenses are granted by implication, estoppel or
;*  otherwise under any patents or trademarks of Freescale Semiconductor, 
;*  Inc. This software is provided on an "AS IS" basis and without warranty.
;*
;*  To the maximum extent permitted by applicable law, FREESCALE 
;*  DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING 
;*  IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
;*  PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE 
;*  SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY 
;*  ACCOMPANYING WRITTEN MATERIALS.
;* 
;*  To the maximum extent permitted by applicable law, IN NO EVENT
;*  SHALL FREESCALE BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING 
;*  WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS 
;*  INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
;*  LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.   
;* 
;*  Freescale assumes no responsibility for the maintenance and support
;*  of this software
;**********************************************************************
;* FILENAME: fir32.s
;*
;* PURPOSE: FIR32 module source file, containing functions for allocating/deallocating 
;*	        data structures for filter and computing a Finite Impulse
;*	        Responce filter.
;*
;* AUTHOR: original code was written by Andrey Butok,
;*		   optimized for eMAC unit by Dmitriy Karpenko	        
;*********************************************

 .section .text       ;-=Locate the code in the ".text" section.=-
;#define __EMAC_H
;#include "emac.h"
 .ALIGN 4
 .XDEF _FIR32_EMAC

;******************************************************
;* NAME: void FIR32( struct tIirStruct *pIIR, Frac32* pX, Frac32* pY, unsigned int n)
;*
;* DESCRIPTION: Computes a Finite Impulse Response (FIR) filter for a array of 32-bit fractional data values.
;******************************************************
;* a2          pFIR        - Pointer to a data structure containing private data for the iir filter
;* 68(a7)      pX          - Pointer to the input vector of n data elements
;* 72(a7)      pY          - Pointer to the output vector of n data elements
;* d2          k           - Counter for inner loop
;* d1          i           - Counter for outer loop
;* d0          N           - Length of coefficients vector(N<=n)
;* a0          pCurY       - Pointer to the current Y
;* a1          pCurX       - Pointer to the current X
;* a3          pCurCoef    - Pointer to the current coefficient
;* a4          pCurHistory - Pointer to the current element of history buffer
;* a5          pPredY      - Pointer to the previous Y
;******************************************************
_FIR32_EMAC:
;//Saving values of used registers
 lea 		-60(a7),a7
 movem.l 	d0-d7/a0-a6,(a7)
 lea		-4(a7),a7
;//Saving value of MAC status register
 move.l		MACSR, d0	
 move.l		d0,(a7)
 lea		4(a7),a7
 ;//initializing MAC mode
 ;#ifdef __FRACT_M
 move.l		#0x00000030,MACSR
 ;#else
 ;move.l		#0x00000000,MACSR
 ;#endif
;//Most useful parameters are moved from stack to registers.
 move.l 	72(a7),a0         ;pCurY=pY; // Pointer to the current Y
 move.l 	68(a7),a1         ;pCurX=pX; // Pointer to the current X.
 move.l 	64(a7),a2         ;N=pFIR->iFirCoefCount;
 move.l 	4(a2),d0
;// Begin of getting Y[1]..Y[N]
 move.l 	#0,ACC0           ;//accumulators' initialization
 move.l	 	#0,ACC1
 move.l 	#0,ACC2
 move.l 	#0,ACC3
 ;//computing a block of output samples from Y[1] to Y[N-N%4]
 moveq.l 	#4,d1          	   ;for(i=4;i<=N;i+=4) { //Begin of outer loop #1
.FORi1:
 cmp.l 		d0,d1              ;  //Comparing i with N
 bhi 		.ENDFORi1          ;  //If (i>N) then jump to .ENDFORi1
 
 move.l 	68(a7),a6      	   ;pCurX=pX+i-4; //Current sample pointer initialization
 lea 		(-16,a6,d1.l*4),a1

 move.l 	(a2),a3        	   ;pCurCoef=pFIR->pFirCoef; //Current coefficient for input pointer initialization
 
 movem.l 	(a1),d3-d6     	   ;d3=*pCurX++; d4=*pCurX++; d5=*pCurX++; d6=*pCurX; pCurX-=3;
 move.l 	(a3)+,a6       	   ;a6=*pCurCoef++;	
   
 mac.l 		a6,d6,<<,-(a1),d6,ACC3  	;ACC3+=a6*d6; d6=*--pCurX; //getting next input sample
 mac.l 		a6,d5,<<,ACC2           	;ACC2+=a6*d5;
 mac.l 		a6,d4,<<,ACC1           	;ACC1+=a6*d4;
 mac.l 		a6,d3,<<,(a3)+,a6,ACC0  	;ACC0+=a6*d3; a6=*pCurCoef++;//getting next coefficient
 ;//cycle of multiplying 8 input samples on 4 coefficients per iteration
 move.l 	#4,d2          				    ;for(k=4; k<i; k+=4) { //Begin of inner loop #1

.FORk1:                            		
 cmp.l 		d1,d2                         	;//comparing k with i
 bcc  		.ENDFORk1                     	;//if (k>=i) then jump to .ENDFORk1
 
 mac.l 		a6,d5,<<,-(a1),d5,ACC3  	;ACC3+=a6*d5; d5=*--pCurX;
 mac.l 		a6,d4,<<,ACC2           	;ACC2+=a6*d4;
 mac.l 		a6,d3,<<,ACC1           	;ACC1+=a6*d3;
 mac.l 		a6,d6,<<,(a3)+,a6,ACC0  	;ACC0+=a6*d6; a6=*pCurCoef++;
 
 mac.l 		a6,d4,<<,-(a1),d4,ACC3  	;ACC3+=a6*d4; d4=*--pCurX;
 mac.l 		a6,d3,<<,ACC2           	;ACC2+=a6*d3;
 mac.l 		a6,d6,<<,ACC1           	;ACC1+=a6*d6;
 mac.l 		a6,d5,<<,(a3)+,a6,ACC0  	;ACC0+=a6*d5; a6=*pCurCoef++;
 
 mac.l 		a6,d3,<<,-(a1),d3,ACC3    	;ACC3+=a6*d3; d3=*--pCurX;
 mac.l 		a6,d6,<<,ACC2             	;ACC2+=a6*d6;
 mac.l 		a6,d5,<<,ACC1             	;ACC1+=d6*d5;
 mac.l 		a6,d4,<<,(a3)+,a6,ACC0    	;ACC0+=a6*d4; a6=*pCurCoef++;

 mac.l 		a6,d6,<<,-(a1),d6,ACC3  	;ACC3+=a6*d6; d6=*--pCurX;
 mac.l 		a6,d5,<<,ACC2           	;ACC2+=a6*d5;
 mac.l 		a6,d4,<<,ACC1           	;ACC1+=a6*d4;
 mac.l 		a6,d3,<<,(a3)+,a6,ACC0  	;ACC0+=a6*d3; a6=*pCurCoef++;

 addq.l 	#4,d2							;//k+=4
 bra  		.FORk1							;//jumping to .FORk1
 
.ENDFORk1:									;} //end of inner loop #1
;//multiplying 3 first input samples on 3 coefficients
 mac.l 		a6,d3,<<,ACC1              	;ACC1+=a6*d3;
 mac.l 		a6,d4,<<,ACC2              	;ACC2+=a6*d4;
 mac.l 		a6,d5,<<,(a3)+,a6,ACC3     	;ACC3+=a6*d5; a6=*pCurCoef++;
 
 mac.l 		a6,d3,<<,ACC2               ;ACC2+=a6*d3;
 mac.l 		a6,d4,<<,(a3)+,a6,ACC3      ;ACC3+=a6*d4; a6=*pCurCoef++;
 
 mac.l 		a6,d3,<<,ACC3               ;ACC3+=a6*d3;
 
 ;//Testing that history buffer is not empty => this is not the first calling of this subroutine
tst.l		12(a2)							;if (pFIR=>iFirHistoryCount>0) { //if #1
beq			.ENDBUFx						;//if (pFIR=>iFirHistoryCount=0) then jump to .ENDBUFy

move.l     	8(a2),a6         				;pCurX=pFIR->pFirHistory+i-4; //Current sample pointer initialization
lea 		(-16,a6,d1.l*4),a1

move.l 		(a2),a6           				;pCurCoef=pFIR->pFirCoef+N; //Current coefficient for input pointer initialization
lea			(0, a6, d0.l*4), a3
 
move.l    	(a1)+,d3						;d3=*pCurX++;				
move.l		(a1)+,d4						;d4=*pCurX++;
move.l		(a1)+,d5						;d5=*pCurX++;
move.l		(a1)+,d6						;d6=*pCurX++;
move.l 		-(a3),a6          				;a6=*--pCurCoef;
 
cmp.l		d0,d1							;if (N=i) {//if #2
bne			.CONT							;//if (N!=i) then jump to .CONT
;//multiplying 3 input samples from history buffer on 3 coefficients 
mac.l 		a6,d3,<<,ACC0               ;ACC0+=a6*d3;
mac.l 		a6,d4,<<,ACC1               ;ACC1+=a6*d4;
mac.l 		a6,d5,<<,-(a3),a6,ACC2      ;ACC2+=a6*d5; a6=*--pCurCoef;

mac.l 		a6,d4,<<,ACC0               ;ACC0+=a6*d4;
mac.l 		a6,d5,<<,-(a3),a6,ACC1      ;ACC1+=a6*d5; a6=*--pCurCoef;
 
mac.l 		a6,d5,<<,ACC0               ;ACC0+=a6*d5;
 
bra			.ENDBUFx						;//jump to .ENDBUFx
  											;} //end if #2
.CONT:										;if (N!=i) { //if #3
 
mac.l		a6,d3,<<,(a1)+,d3,ACC0		;ACC0+=a6*d3; d3=*pCurX++;
mac.l		a6,d4,<<,ACC1				;ACC1+=a6*d4;
mac.l		a6,d5,<<,ACC2				;ACC2+=a6*d5;
mac.l		a6,d6,<<,-(a3),a6,ACC3		;ACC3+=a6*d6; a6=*--pCurCoef;

move.l  	d1,d2             				
addq.l		#4,d2
;//cycle of multiplying 8 input samples from history buffer on 4 coefficients per iteration
.FORk11:                            		;for(k=i+4; k<N; k+=4) { //begin of inner loop #2
cmp.l 		d0,d2                   		;//comparing k with N=-
bcc  		.ENDFORk11                    	;//if (k>=N) then jump to .ENDFORk11
 
mac.l		a6,d4,<<,(a1)+,d4,ACC0		;ACC0+=a6*d4; d4=*pCurX++;
mac.l		a6,d5,<<,ACC1				;ACC1+=a6*d5;
mac.l		a6,d6,<<,ACC2				;ACC2+=a6*d6;
mac.l		a6,d3,<<,-(a3),a6,ACC3		;ACC3+=a6*d3; a6=*--pCurCoef;

mac.l		a6,d5,<<,(a1)+,d5,ACC0		;ACC0+=a6*d5; d5=*pCurX++;
mac.l		a6,d6,<<,ACC1				;ACC1+=a6*d6;
mac.l		a6,d3,<<,ACC2				;ACC2+=a6*d3;
mac.l		a6,d4,<<,-(a3),a6,ACC3		;ACC3+=a6*d4; a6=*--pCurCoef;
 
mac.l		a6,d6,<<,(a1)+,d6,ACC0		;ACC0+=a6*d6; d6=*pCurX++;
mac.l		a6,d3,<<,ACC1				;ACC1+=a6*d3;
mac.l		a6,d4,<<,ACC2				;ACC2+=a6*d4;
mac.l		a6,d5,<<,-(a3),a6,ACC3		;ACC3+=a6*d5; a6=*--pCurCoef;

mac.l		a6,d3,<<,(a1)+,d3,ACC0		;ACC0+=a6*d3; d3=*pCurX++;
mac.l		a6,d4,<<,ACC1				;ACC1+=a6*d4;
mac.l		a6,d5,<<,ACC2				;ACC2+=a6*d5;
mac.l		a6,d6,<<,-(a3),a6,ACC3		;ACC3+=a6*d6; a6=*--pCurCoef;

addq.l 		#4,d2							;//k+=4
bra  		.FORk11							;//jumping to .FORk11
 
.ENDFORk11:									;} //end of inner loop #2
;//cycle of multiplying 4 input samples from history buffer on 1 coefficient per iteration
move.l		d0,d2							;//d2=(N-1)%4;
subq.l		#1,d2
andi.l		#3,d2
 
.FORk12:									;for(k=(N-1)%4; k>0; k--){//begin of inner loop #3=-
cmpi.l		#0,d2							;//comparing k with 0
beq			.ENDFORk12						;//if (k=0) then jump to .ENDFORk12
 
mac.l		a6,d4,<<,ACC0				;ACC0+=a6*d4;
mac.l		a6,d5,<<,ACC1				;ACC1+=a6*d5;
mac.l		a6,d6,<<,ACC2				;ACC2+=a6*d6;
mac.l		a6,d3,<<,-(a3),a6,ACC3		;ACC3+=a6*d3; a6=*--pCurCoef;
 
move.l		d5,d4							;d4=d5;
move.l		d6,d5							;d5=d6;
move.l		d3,d6							;d6=d3;
 
move.l		(a1)+,d3						;d3=*pCurX++;
 
subq.l		#1,d2							;//decrementing k
bra			.FORk12							;//jumping to .FORk12
.ENDFORk12:									;} //end of inner loop #3=-
 ;//multiplying 3 input samples on 3 coefficients
mac.l 		a6,d4,<<,ACC0             	;ACC0+=a6*d4;
mac.l 		a6,d5,<<,ACC1             	;ACC1+=a6*d5;
mac.l 		a6,d6,<<,-(a3),a6,ACC2    	;ACC2+=a6*d6; a6=*--pCurCoef;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产喷白浆一区二区三区| 欧美精品一区二区在线观看| 久久99精品一区二区三区三区| 久久久99精品免费观看不卡| 欧美视频精品在线观看| 国产激情精品久久久第一区二区 | 91在线视频观看| 美女脱光内衣内裤视频久久影院| 国产精品白丝在线| 欧美电视剧在线观看完整版| 欧美亚洲一区三区| 91偷拍与自偷拍精品| 国产乱码精品一品二品| 亚洲一级二级在线| 亚洲色图欧洲色图婷婷| 久久久久免费观看| 日韩女优制服丝袜电影| 欧美精品高清视频| 欧美在线观看禁18| 色av成人天堂桃色av| www.日韩在线| 国产福利不卡视频| 激情综合色综合久久| 男人的天堂久久精品| 亚洲成人激情自拍| 亚洲午夜精品17c| 亚洲精品国产无天堂网2021| 亚洲桃色在线一区| 国产精品久久久久7777按摩| 中日韩av电影| 日本一区二区三区四区在线视频| 精品国产伦一区二区三区观看方式 | 三级欧美韩日大片在线看| 一区二区三区在线观看欧美| 国产女主播在线一区二区| 久久这里只有精品6| 日韩视频免费观看高清完整版| 在线不卡的av| 制服.丝袜.亚洲.中文.综合| 欧美日免费三级在线| 欧美精品久久天天躁| 欧美人与禽zozo性伦| 5566中文字幕一区二区电影| 91.成人天堂一区| 日韩精品一区二区三区老鸭窝| 欧美日韩国产一级| 日韩亚洲欧美在线| 精品久久久久久最新网址| 精品盗摄一区二区三区| 国产日韩欧美精品在线| 中文字幕字幕中文在线中不卡视频| 亚洲欧美色综合| 亚洲一区二区3| 美腿丝袜亚洲综合| 国产成人精品午夜视频免费| 成人av在线资源网站| 色噜噜偷拍精品综合在线| 欧美中文字幕一区二区三区| 欧美日韩美少妇| 欧美大片在线观看一区二区| 欧美激情在线看| 依依成人综合视频| 免费高清视频精品| 成人性生交大片免费看中文网站| 99久久精品一区| 欧美亚男人的天堂| 日韩一区二区在线看片| 久久久一区二区| 亚洲伦理在线免费看| 日韩中文字幕区一区有砖一区| 韩国av一区二区| 成人av中文字幕| 欧美一级一级性生活免费录像| 久久久久久夜精品精品免费| 亚洲精品欧美二区三区中文字幕| 日本在线不卡一区| 粉嫩av一区二区三区| 欧美伦理电影网| 国产精品免费人成网站| 午夜免费欧美电影| 成人免费高清视频| 欧美一级视频精品观看| 亚洲国产高清在线| 免费成人在线视频观看| 99精品久久只有精品| 精品国产一二三区| 又紧又大又爽精品一区二区| 极品少妇xxxx精品少妇| 一本在线高清不卡dvd| 欧美xxxxxxxx| 色拍拍在线精品视频8848| 日韩欧美在线综合网| 亚洲人精品一区| 国产一区亚洲一区| 欧美日韩一区二区电影| 国产午夜久久久久| 免费在线看一区| 色8久久人人97超碰香蕉987| 精品少妇一区二区三区免费观看 | 免费一区二区视频| 91网页版在线| 久久久亚洲精品一区二区三区 | 亚洲青青青在线视频| 狠狠色狠狠色综合日日91app| 在线免费亚洲电影| 国产精品家庭影院| 国产另类ts人妖一区二区| 91精品国产乱| 亚洲国产精品久久一线不卡| 99久久免费视频.com| 久久久久久久综合| 激情综合色播五月| 91精品综合久久久久久| 亚洲自拍偷拍麻豆| 91在线观看视频| 日韩毛片一二三区| 国产99精品视频| 久久伊人中文字幕| 老鸭窝一区二区久久精品| 欧美日韩大陆在线| 亚洲午夜久久久久久久久电影院 | 日韩一级二级三级精品视频| 夜夜精品视频一区二区| 色婷婷综合视频在线观看| 中文字幕一区二区三| 99视频热这里只有精品免费| 国产女人18毛片水真多成人如厕| 国产精品自拍三区| 国产亚洲一二三区| 国产精品一区二区三区99| 久久综合久久综合亚洲| 免费成人小视频| 精品国产免费一区二区三区四区 | 激情小说亚洲一区| 精品欧美一区二区在线观看 | 成人av在线播放网址| 国产欧美一区二区精品性| 国产久卡久卡久卡久卡视频精品| 精品久久久久久久一区二区蜜臀| 老司机免费视频一区二区| 欧美不卡一区二区| 国产精品一区一区三区| 国产精品国产三级国产普通话三级| 成人h动漫精品一区二| 亚洲欧洲综合另类| 欧美狂野另类xxxxoooo| 日本网站在线观看一区二区三区 | 国产精品中文字幕一区二区三区| 久久奇米777| 99在线视频精品| 亚洲成人精品影院| 欧美一级久久久| 国产精品综合视频| 日韩一区欧美一区| 欧美日韩视频专区在线播放| 蜜桃视频在线观看一区二区| 国产性天天综合网| 一本色道**综合亚洲精品蜜桃冫| 亚洲成人自拍偷拍| 精品粉嫩超白一线天av| 福利一区二区在线| 亚洲午夜精品网| 精品成人a区在线观看| 成人午夜激情影院| 亚洲成人av一区二区三区| 欧美精品一区二区精品网| 成人国产免费视频| 亚洲二区在线视频| 国产婷婷色一区二区三区在线| 97超碰欧美中文字幕| 日韩不卡在线观看日韩不卡视频| 久久精品人人做人人综合| 色婷婷精品大视频在线蜜桃视频| 日本aⅴ精品一区二区三区| 欧美激情一区三区| 欧美日韩国产免费一区二区| 国产成人av自拍| 亚洲444eee在线观看| 国产午夜精品久久| 欧美精品在线一区二区| 国产精品99久久久久久似苏梦涵 | 最新日韩av在线| 欧美精品成人一区二区三区四区| 国产高清无密码一区二区三区| 夜夜精品浪潮av一区二区三区| 26uuu国产一区二区三区| 欧美色老头old∨ideo| 国产成人精品影院| 日本午夜精品一区二区三区电影| 国产精品丝袜久久久久久app| 欧美精品视频www在线观看 | 久久国产乱子精品免费女| 亚洲伦在线观看| 亚洲精品一区二区三区四区高清 | 国产精品视频麻豆| 欧美一卡二卡三卡| 欧美这里有精品| 成人黄色在线看| 黑人巨大精品欧美一区| 婷婷综合在线观看|