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

📄 blkmove.c

📁 数字信号处理芯片的测试源文件
💻 C
字号:
/*--------------------------------------------------------*/
/*  WQ21ST SOFTWARE	STUDIO.			                  	  */
/*--------------------------------------------------------*/
/*  Moves block of memory from program to data		      */
/*			   and data to program space	              */
/*--------------------------------------------------------*/
/*  file name:	 blkmove.c				                  */
/*  Started on:  08/11/2001    by WQ			          */
/*  Last update: 08/28/2001    by WQ			     	  */
/*--------------------------------------------------------*/

unsigned int  blk_mv_p2d( unsigned int *pgm_src, unsigned int size, unsigned int *data_dest )
{


    /*--------------------------------------------------*/
    /* Save 3 Aux Registers to Stack bump past temp 1st */
    /* Use AR3 to point to parameters on the stack    	*/
    /*--------------------------------------------------*/

    asm("       MAR *+         ");
    asm("       SAR AR3,*+     ");

    /*--------------------------------------------------*/
    /* AR3 is Pointer to Parameters on the stack via	*/
    /* backing up stack pointer then restoring it	*/
    /*--------------------------------------------------*/
    asm("       MAR *-         ");
    asm("       MAR *-         ");
    asm("       MAR *-         ");
    asm("       LAR AR0,#3     ");
    asm("       LAR AR3,*0+    ");
    asm("       MAR *,AR3      ");
    asm("       SBRK  #3       ");

    /*--------------------------------------------------*/
    /* save off AR4 - AR6 onto stack, parameter vars	*/
    /*--------------------------------------------------*/
    asm("       MAR *,AR1      ");
    asm("       SAR AR4,*+     ");
    asm("       SAR AR5,*+     ");
    asm("       SAR AR6,*+     ");

    /*--------------------------------------------------*/
    /* Block move code					*/
    /* AR4 has start address pointer			*/
    /* AR5 has size needs to be decremented by 1	*/
    /* AR6 has data buffer pointer			*/
    /*--------------------------------------------------*/

    asm("       MAR  *,AR3     ");
    asm("       LAR  AR4,*-    ");
    asm("       LAR  AR5,*-    ");
    asm("       LAR  AR6,*-    ");

    asm("       MAR  *,AR4     ");

    asm("       LACL  *,AR5    ");
    asm("       SBRK  #1       ");

    asm("       MAR  *,AR6     ");
    asm("BMPLP: TBLR *+,AR5    ");
    asm("       ADD #1         ");
    asm("       BANZ BMPLP,AR6 ");

    /* Restore Aux Registers from Stack */
    asm("       MAR *,AR1      ");
    asm("       MAR *-         ");
    asm("       LAR AR6,*-     ");
    asm("       LAR AR5,*-     ");
    asm("       LAR AR4,*-     ");
    asm("       LAR AR3,*-     ");

    return( 0 );
}

/* This function has not been debugged */


unsigned int  blk_mv_d2p( unsigned int *data_src, unsigned int size, unsigned int *pgm_dest )
{


    /*--------------------------------------------------*/
    /* Save 3 Aux Registers to Stack bump past temp 1st */
    /* Use AR3 to point to parameters on the stack	*/
    /*--------------------------------------------------*/

    asm("       MAR *+         ");
    asm("       SAR AR3,*+     ");

    /*--------------------------------------------------*/
    /* AR3 is Pointer to Parameters on the stack via	*/
    /* backing up stack pointer then restoring it	*/
    /*--------------------------------------------------*/
    asm("       MAR *-         ");
    asm("       MAR *-         ");
    asm("       MAR *-         ");
    asm("       LAR AR0,#3     ");
    asm("       LAR AR3,*0+    ");
    asm("       MAR *,AR3      ");
    asm("       SBRK  #3       ");

    /*--------------------------------------------------*/
    /* save off AR4 - AR6 onto stack, parameter vars	*/
    /*--------------------------------------------------*/
    asm("       MAR *,AR1      ");
    asm("       SAR AR4,*+     ");
    asm("       SAR AR5,*+     ");
    asm("       SAR AR6,*+     ");

    /*--------------------------------------------------*/
    /* Block move code					*/
    /* AR4 has start data address pointer		*/
    /* AR5 has size needs to be decremented by 1	*/
    /* AR6 has program destination pointer		*/
    /*--------------------------------------------------*/

    asm("       MAR  *,AR3     ");
    asm("       LAR  AR4,*-    ");
    asm("       LAR  AR5,*-    ");
    asm("       LAR  AR6,*-    ");

    asm("       MAR  *,AR6     ");

    asm("       LACL  *,AR5    ");
    asm("       SBRK  #1       ");

    asm("       MAR  *,AR4     ");
    asm("BMDLP: TBLW *+,AR5    ");
    asm("       ADD #1         ");
    asm("       BANZ BMDLP,AR4 ");

    /* Restore Aux Registers from Stack */
    asm("       MAR *,AR1      ");
    asm("       MAR *-         ");
    asm("       LAR AR6,*-     ");
    asm("       LAR AR5,*-     ");
    asm("       LAR AR4,*-     ");
    asm("       LAR AR3,*-     ");

    return( 0 );
}

⌨️ 快捷键说明

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