- 新建一个Project,在Project中新建一个.sa文件,把你的汇编代码放进去
这里用了TI官方给的Guide中的5-63为例
.global _fir
_fir: .cproc x,h,y
.reg x_1, h_1, sum0, sum1, ctr, octr
.reg p00, p01, p10, p11, x0, x1, h0, h1, rstx, rsth
ADD h,2,h_1
MVK 50,octr
MVK 64,rstx
MVK 64,rsth
OUTLOOP:
ADD x,2,x_1
SUB h_1,2,h
MVK 16,ctr
ZERO sum0
ZERO sum1
[octr] SUB octr,1,octr
LDH .D1 *x++[2],x0
LOOP: .trip 16
LDH .D2 *x_1++[2],x1 ; x1 = x[j+i+1]
LDH .D1 *h++[2],h0 ; h0 = h[i]
MPY .M1 x0,h0,p00 ; x0 * h0
MPY .M1X x1,h0,p10 ; x1 * h0
ADD .L1 p00,sum0,sum0 ; sum0 += x0 * h0
ADD .L2X p10,sum1,sum1 ; sum1 += x1 * h0
LDH .D1 *x++[2],x0 ; x0 = x[j+i+2]
LDH .D2 *h_1++[2],h1 ; h1 = h[i+1]
MPY .M2 x1,h1,p01 ; x1 * h1
MPY .M2X x0,h1,p11 ; x0 * h1
ADD .L1X p01,sum0,sum0 ; sum0 += x1 * h1
ADD .L2 p11,sum1,sum1 ; sum1 += x0 * h1
[ctr] SUB .S2 ctr,1,ctr ; decrement loop counter
[ctr] B .S2 LOOP ; branch to loop
SHR sum0,15,sum0 ; sum0 >> 15
SHR sum1,15,sum1 ; sum1 >> 15
STH sum0,*y++ ; y[j] = sum0 >> 15
STH sum1,*y++ ; y[j+1] = sum1 >> 15
SUB x,rstx,x ; reset x pointer to x[j]
SUB h_1,rsth,h_1 ; reset h pointer to h[0]
[octr] B OUTLOOP ; branch to outer loop
.endproc
- 在main.c中extern,观察第一行知道这个函数叫做
_fir
所以在main.c环境里这么写
extern void _fir(short *x, short *h, short *y);
- 然后在main函数里正常调用使用即可
_fir(x,b,y);