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

📄 amf_delayoffchip_lx3_render.asm

📁 ADI SHARC DSP 音频算法标准模块库
💻 ASM
字号:
// Copyright(c) 2005 Analog Devices, Inc. All Rights Reserved.
// This software is proprietary and confidential to Analog Devices, Inc. and its licensors.

// File    : $Id: //depot/development/visualaudio/modules/2.5.0/SHARC/Source/AMF_DelayOffChip_LX3_Render.asm#3 $ 
// Part of : VisualAudio V2.5.0 
// Updated : $Date: 2006/10/12 $ by $Author: Fernando $




//    Module Name     : AMF_DelayOffChip_LX3_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 LX3 AVR) (TickSize=64) ( + *tickSize)
// (SIMD used)
//====================================================================================

#if 1


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

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

// global routines
.global    _AMF_DelayOffChip_LX3_Render;            ;

.segment /pm SEG_MOD_FAST_CODE;

_AMF_DelayOffChip_LX3_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_LX3,delay),i4);                   // length of delay buffer in samples
    b12=dm(OFFSETOF(AMF_DelayOffChip_LX3,delayBuffer),i4);              // buffer base
    r1=dm(OFFSETOF(AMF_DelayOffChip_LX3,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_LX3_Loop1 until lce;
AMF_DelayOffChip_LX3_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_LX3_Loop2 until lce;
AMF_DelayOffChip_LX3_Loop2:
        r0=dm(i0,m6), pm(i12,m14)=r0;                     // delay[index++] = r0, r0 = in[i++];
 
    l12 = 0;
    
    r0=i12;
    dm(OFFSETOF(AMF_DelayOffChip_LX3,delayWritePtr),i4)=r0;             // store away current delay pointer

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

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

⌨️ 快捷键说明

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