亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
**性色生活片久久毛片| 欧美国产97人人爽人人喊| 国产高清亚洲一区| 一区二区三区在线观看视频| 精品久久久久久最新网址| 日本韩国视频一区二区| 国产在线播放一区| 亚洲福利一二三区| 国产精品国产三级国产aⅴ无密码| 欧美日本一区二区三区四区| 东方欧美亚洲色图在线| 免费在线观看成人| 亚洲综合色自拍一区| 亚洲欧洲日产国码二区| 久久九九国产精品| 欧美成人艳星乳罩| 91麻豆精品国产自产在线| 色天天综合色天天久久| 99久久综合国产精品| 国产传媒日韩欧美成人| 国精品**一区二区三区在线蜜桃| 一区二区三区在线视频免费观看| 国产精品天干天干在观线| 久久香蕉国产线看观看99| 欧美一卡二卡三卡| 欧美精品乱人伦久久久久久| 91国产福利在线| 99久久国产综合精品麻豆 | 国产精品一二三区| 老司机午夜精品| 麻豆免费看一区二区三区| 亚洲不卡在线观看| 夜夜嗨av一区二区三区四季av | 91国在线观看| 色噜噜狠狠一区二区三区果冻| youjizz国产精品| 盗摄精品av一区二区三区| 国产一区二区看久久| 国产一区二区三区四区五区美女| 麻豆精品一区二区av白丝在线| 日韩在线观看一区二区| 日本vs亚洲vs韩国一区三区 | 91免费在线视频观看| 99久久99久久免费精品蜜臀| av电影一区二区| 99久久伊人网影院| 91蜜桃网址入口| 一本色道a无线码一区v| 欧洲视频一区二区| 欧美日韩小视频| 欧美一区永久视频免费观看| 欧美电影精品一区二区| 精品成人免费观看| 国产人久久人人人人爽| 日韩毛片视频在线看| 亚洲中国最大av网站| 亚洲高清免费观看高清完整版在线观看| 亚洲成人激情综合网| 免费人成精品欧美精品 | 欧美日韩免费一区二区三区视频| 欧美日韩成人在线| 精品国产电影一区二区| 久久久99久久| 亚洲乱码精品一二三四区日韩在线| 一区二区三区视频在线观看| 日韩黄色一级片| 欧美福利视频一区| 欧洲av一区二区嗯嗯嗯啊| 欧美精品 国产精品| 精品人在线二区三区| 日本一区二区三区四区在线视频 | 亚洲欧美在线另类| 亚洲电影欧美电影有声小说| 久久精品999| 波多野洁衣一区| 欧美群妇大交群中文字幕| 久久久蜜桃精品| 亚洲一卡二卡三卡四卡五卡| 美女精品一区二区| www.亚洲色图| 7799精品视频| 国产精品网站在线观看| 亚洲图片有声小说| 国产成人午夜电影网| 在线视频你懂得一区| 2024国产精品| 亚洲一区视频在线| 国产露脸91国语对白| 欧美伊人久久久久久久久影院| 日韩一区二区三区高清免费看看| 国产欧美综合色| 秋霞午夜av一区二区三区 | 精品久久一二三区| 亚洲欧美日韩国产手机在线 | 在线视频中文字幕一区二区| 欧美不卡视频一区| 亚洲国产另类av| jizz一区二区| 久久久久久久久岛国免费| 亚洲一区二区三区四区五区黄| 国产一区二区三区免费观看| 欧美视频完全免费看| 国产精品女人毛片| 久久精品国产精品青草| 欧美亚洲高清一区| 国产精品免费看片| 国内欧美视频一区二区| 欧美久久久久久久久中文字幕| 国产精品久99| 国产成人av电影免费在线观看| 欧美一区二区三区思思人| 一区二区三区在线看| 成人综合婷婷国产精品久久蜜臀| 日韩视频在线一区二区| 亚洲午夜成aⅴ人片| jizzjizzjizz欧美| 国产精品天天摸av网| 国产成人一级电影| 欧美成人女星排行榜| 免费成人av在线播放| 欧美丰满一区二区免费视频| 亚洲曰韩产成在线| 91亚洲国产成人精品一区二区三| 欧美激情在线观看视频免费| 精品一区二区三区蜜桃| 欧美一区二区三区成人| 日韩国产精品91| 欧美午夜不卡视频| 亚洲第一av色| 在线观看成人小视频| 亚洲图片自拍偷拍| 欧美日韩亚洲高清一区二区| 一区二区国产视频| 欧美性大战xxxxx久久久| 亚洲一区二区三区四区五区黄| 在线日韩一区二区| 亚洲成人av福利| 宅男在线国产精品| 久久99精品久久久久婷婷| 日韩一二三区不卡| 激情六月婷婷综合| 国产欧美日韩不卡免费| 成人午夜电影小说| 1024成人网色www| 在线免费观看日本欧美| 午夜精品久久久久久久久久 | 国产91丝袜在线观看| 国产视频911| 高清日韩电视剧大全免费| 中文字幕亚洲欧美在线不卡| 91亚洲精品久久久蜜桃网站| 一区二区不卡在线播放| 欧美精品v日韩精品v韩国精品v| 午夜激情久久久| 精品欧美乱码久久久久久1区2区| 激情五月婷婷综合网| 国产欧美日韩在线看| www.欧美.com| 亚洲国产精品影院| 日韩你懂的在线播放| 丁香六月久久综合狠狠色| 亚洲欧洲一区二区三区| 欧美伦理视频网站| 久久精品国产久精国产爱| 欧美激情一区二区三区全黄| www.色精品| 日本美女视频一区二区| 久久久久9999亚洲精品| 色综合天天综合在线视频| 亚洲r级在线视频| 国产午夜精品久久久久久免费视 | 韩国在线一区二区| 国产精品成人免费| 欧美日韩国产影片| 国产不卡在线一区| 亚洲一区在线播放| 久久亚洲二区三区| 欧美午夜精品久久久| 国内精品国产三级国产a久久| 亚洲欧美综合网| 在线播放亚洲一区| 成人网男人的天堂| 免费精品视频最新在线| 国产精品动漫网站| 日韩精品一区二| 色综合天天综合狠狠| 久久国产福利国产秒拍| ●精品国产综合乱码久久久久| 欧美一卡二卡在线观看| 91亚洲精品久久久蜜桃| 韩国成人福利片在线播放| 亚洲午夜免费视频| 国产精品麻豆久久久| 日韩精品一区二区三区三区免费| 99riav一区二区三区| 激情综合色播五月| 亚洲香蕉伊在人在线观| 中文字幕第一页久久| 欧美大度的电影原声| 欧洲国内综合视频|