⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amf_delayoffchip_render.asm

📁 ADI SHARC DSP 音频算法标准模块库
💻 ASM
字号:

// Copyright(c) 2005 Analog Devices, Inc. All Rights Reserved. ADI Confidential.

//    Module Name     : AMF_DelayOffChip_Render.asm 
//    DSP Processor   : ADSP21367
//    Description     : Delay off chip audio module ASM file.
//    Owner           : Analog Devices
//    Original Author : Tim Stilson	
//    Date 			  : 7/26/05
//====================================================================================
// Processor resources used:
//  words pmem INTERNAL
//  cycles (off-chip delay buf, 21367 AVR) (TickSize=64) ( + *tickSize)
// (SIMD used)
//====================================================================================

#if 1


#include "processor.h"
#include "asm_sprt.h"

#include "AudioProcessing.h"
.import "AMF_DelayOffChip.h";

// global routines
.global	_AMF_DelayOffChip_Render;			;

.segment /pm SEG_MOD_FAST_CODE;

_AMF_DelayOffChip_Render:
    
 // push context on stack
    r0=i2; puts=r0;
    r0=i0; puts=r0;

	i4=r8;					// i4->*buffers
	
 // initialize input and output samples pointers
	i0=dm(0,i4);			// i1->buffers[0], input
	i2=dm(1,i4);			// i2->buffers[1], output

	i4=r4;					//i4->testModuleInstance[0]
	   
 // initialize delay buffer pointer
	l12=dm(OFFSETOF(AMF_DelayOffChip,delay),i4);           		// length of delay buffer in samples
	b12=dm(OFFSETOF(AMF_DelayOffChip,delayBuffer),i4);              // buffer base
	r1=dm(OFFSETOF(AMF_DelayOffChip,delayWritePtr),i4); 	        // current delay pointer
	i12=r1;
    
    // copy from delay buff into output

		              r0=pm(i12,m14);					// r0 = delay[index++];
    lcntr=r12, do AMF_DelayOffChip_Loop1 until lce;
AMF_DelayOffChip_Loop1:
		dm(i2,m6)=r0, r0=pm(i12,m14); 					// out[i++] = r0, r0 = delay[index++];

    // copy from input into delay buff

	i12=r1; 	        // reset back to start of tick

		r0=dm(i0,m6);                					// r0 = in[i++];
    lcntr=r12, do AMF_DelayOffChip_Loop2 until lce;
AMF_DelayOffChip_Loop2:
		r0=dm(i0,m6), pm(i12,m14)=r0; 					// delay[index++] = r0, r0 = in[i++];
 
	l12 = 0;
	
	r0=i12;
	dm(OFFSETOF(AMF_DelayOffChip,delayWritePtr),i4)=r0; 	        // store away current delay pointer

 // pop context off stack
    i0=gets(1);
    i2=gets(2);
    alter(2);

//------------------------------------------------------------------------------------
_AMF_DelayOffChip_Render.END:
	leaf_exit; // C-rth requires this instead of rts
//------------------------------------------------------------------------------------
    
.endseg;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -