我使用的开发板是TMS320C5535,需要做一个实时语音处理系统,每一个采样点间隔内要做120次相乘相加,直接用C语言实现的话,会超时。请问有没有关于乘加器使用的例程?或者说乘加器怎么使用?谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用的开发板是TMS320C5535,需要做一个实时语音处理系统,每一个采样点间隔内要做120次相乘相加,直接用C语言实现的话,会超时。请问有没有关于乘加器使用的例程?或者说乘加器怎么使用?谢谢!
系统主要的部分是用C语言写的,因为我用C语言实现乘加会超时,所以想用乘加器。我不知道乘加器是怎么用?
你可以看一下下面文档第271页上的MAC指令集.
http://www.ti.com/lit/ug/swpu067e/swpu067e.pdf
你好,请问一下用汇编实现的函数要存在什么文件中?如何在main函数中调用?
如果你只是调用汇编指令的话, 可以用asm(" ");语句.
如果是汇编函数的话, 在.asm文件里写, 在.c文件里调用汇编函数.
另外, 关于如何在c里调用汇编函数, 可以看一下下面的compiler user guide
6.5 Interfacing C and C++ With Assembly Language
http://www.ti.com/lit/ug/spru281g/spru281g.pdf
_func:
AADD #-1, SP
MOV XSP, XAR0
MOV #5, *SP(#0)
CALL #_asmfunc
AADD #1, SP
RET
请问第二句和第三句是什么意思?
_asmfunc:
AADD #-1, SP
MOV XSP, XAR0
MOV #5, *SP(#0)
MOV *AR0, AR1
ADD *(#_global), AR1, AR1
MOV AR1, *(#_global)
AADD #1, SP
RET
我新建了一个.asm文件,写成上面那样,在main()函数里调用,为什么编译报错:attempt to redefine label, MOV还有illegal directive or mnemonic.
我还以为你已经下班啦。。。谢谢回答!
请问一下浮点数在汇编语言中怎么表示?
比如这一句C语言程序:float adval=2.5;在反汇编窗口变成下面两句话:
MOV dbl(*(#04b24h)),AC0
MOV AC0,dbl(*SP(#06h))
第二句我看的懂,第一句是不是说在存储器#04b24h这个地址存放着2.5这个数据?
Changhong Zhang 说:_asmfunc:
AADD #-1, SP
MOV XSP, XAR0
MOV #5, *SP(#0)
MOV *AR0, AR1
ADD *(#_global), AR1, AR1
MOV AR1, *(#_global)
AADD #1, SP
RET我新建了一个.asm文件,写成上面那样,在main()函数里调用,为什么编译报错:attempt to redefine label, MOV还有illegal directive or mnemonic.
我还以为你已经下班啦。。。谢谢回答!
现在可以编译通过啦,是因为我写的.asm文件格式不对,我每一行的开头是顶头写的,留一个空格就好啦
Changhong Zhang 说:请问一下浮点数在汇编语言中怎么表示?
比如这一句C语言程序:float adval=2.5;在反汇编窗口变成下面两句话:
MOV dbl(*(#04b24h)),AC0
MOV AC0,dbl(*SP(#06h))第二句我看的懂,第一句是不是说在存储器#04b24h这个地址存放着2.5这个数据?
好的,我看看,谢谢回答!
请问一下使用乘加指令“MACM”之后符号标志位放在哪个寄存器?