📄 cos.asm
字号:
;
; Project: Experiment 3.6.5.3 Function Approximaiton - Chapter 3
; File name: cos.asm
;
; Description: cos(x) approximation function
; using function: cos(x)=1-(1/2!)x^2+(1/4!)x^4-(1/6!)x^6
;
; For the book "Real Time Digital Signal Processing:
; Implementation and Application, 2nd Ed"
; By Sen M. Kuo, Bob H. Lee, and Wenshun Tian
; Publisher: John Wiley and Sons, Ltd
;
; Entry: T0 = x, in the range of [0 pi/2] in Q14 format
; Return: T0 = cos(x) in Q15 format
;
; 19 cycles
;
;
; Tools used: CCS v.2.12.07
; TMS320VC5510 DSK Rev-C
;
.mmregs
.data
_icosCoef ;[1 (-1/2!) (1/4!) (-1/6!)]
.word 32767,-16383,1365,-45
.sect ".text"
.def _cosine
_cosine:
amov #(_icosCoef+3),XAR3 ; ptr = &icosCoef[3];
amov #AR1,AR2 ; AR1 is used as temp register
|| mov T0, HI(AC0)
sqr AC0 ; AC0 = (long)T0 * T0;
sfts AC0,#-15 ; T0 = (short)(AC0>>15);
mov AC0,T0
mpym *AR3-,T0,AC0 ; AC0 = (long)T0 * *ptr--;
sfts AC0,#-13 ; AC0 = AC0 >> 13;
add *AR3-,AC0,AR1 ; AC0 = (short)(AC0 + *ptr--) * (long)T0;
mpym *AR2,T0,AC0
sfts AC0,#-13 ; AC0 = AC0 >> 13;
add *AR3-,AC0,AR1 ; AC0 = (short)(AC0 + *ptr--) * (long)T0;
mpym *AR2,T0,AC0
sfts AC0,#-13 ; AC0 = AC0 >> 13;
|| mov *AR3,T0
add AC0,T0 ; AC0 = AC0 + *ptr;
ret ; return((short)AC0);
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -