s5_wvec.sa

来自「dsp6713开发板的许多例程.对入门特别有用」· SA 代码 · 共 40 行

SA
40
字号
***********************************************************************
*         Copyright (C) 1996-2001 Texas Instruments Incorporated
*                      All Rights Reserved
*         WVEC5 ASSEMBLY OPTIMIZER SOURCE - Example 6-39
*         From Programmer's Guide
***********************************************************************
********* ASSEMBLY OPTIMIZER CODE: *******************


	.def _w_vec_sa

_w_vec_sa: .cproc   a, b, c, m

        .reg    ai_i1, bi_i1, pi, pi1, pi_i1, pi_s, pi1_s 
	.reg	mask, bi, bi1, ci, ci1, c1, cntr
	.no_mdep
 
	MVK	-1,mask			; set to all 1s to create 0xFFFFFFFF
	MVKH	0,mask			; clear upper 16 bits to create 0xFFFF
        MVK     50,cntr			; cntr = 100/2
	ADD	2,c,c1			; point to c[1]
 
LOOP:   .trip 50
	LDW	.D1T1	*a++,ai_i1	; ai & ai+1
	LDW	.D2	*b++,bi_i1	; bi & bi+1
	MPY	.M1X	ai_i1,m,pi	; m * ai
	MPYHL	.M2X	ai_i1,m,pi1	; m * ai+1
	SHR	.S1	pi,15,pi_s	; (m * ai) >> 15
	SHR	.S2	pi1,15,pi1_s	; (m * ai+1) >> 15
	AND	.L2	bi_i1,mask,bi	; bi
	SHR	.S2	bi_i1,16,bi1	; bi+1	
	ADD	.L1X	pi_s,bi,ci	; ci = (m * ai) >> 15 + bi
	ADD	.L2	pi1_s,bi1,ci1	; ci+1 = (m * ai+1) >> 15 + bi+1
	STH	.D1	ci,*c++[2]	; store ci
	STH	.D2	ci1,*c1++[2]	; store ci+1
[cntr]	SUB	.L1	cntr,1,cntr	; decrement loop counter
[cntr] 	B	.S1	LOOP		; branch to loop

        .endproc

⌨️ 快捷键说明

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