您当前的位置:五五电子网电子知识单片机-工控设备综合-其它一种TI 5000系列DSP C/C++语言和汇编语言 正文
一种TI 5000系列DSP C/C++语言和汇编语言

一种TI 5000系列DSP C/C++语言和汇编语言

点击数:7555 次   录入时间:03-04 11:36:41   整理:http://www.55dianzi.com   综合-其它
++程序调用他。
5.1算法简介
  由于16 b定点DSP中没有32 b乘法指令,所以一定要用几种16 b乘法指令结合一定算法来 进行32 b乘法运算。一个32 b数在存储器中是分开存储的。高16位存放在低地址,他在进 行乘法运算是可以看作一个16 b有符号数;低16位存放在相邻的低地址,他进行乘法运算 时可以看作一个16 b无符号数。于是算式如下:  
  
其中:S代表符号数;U代表无符号数。
  由上算式可见,在32 b乘法运算中,实际上包含了3种乘法运算:U*U,S*U和S*S 。一般 的乘法运算指令都是两个带符号数相乘,即S*S。所以在编程时,还要用到以下两条乘法指 令:
 
5.2C语言主程序


  
在主程序中进行MPY32函数调用时,函数传递情形如图2所示。

  从图2可以看出,函数MPY32的第一参数存放在A累加器中,第二个参数在堆栈中,高16位 在堆栈中的低地址,低16位在堆栈中的高地址。由于MPY32是汇编语言函数,所以编译器不 为其分配局部帧,局部帧的分配在汇编程序中进行。
5.3汇编程序
  可以看出,在汇编程序中至少要为局部帧分配8个单元,其中4个单元用来存放参数值,4 个单元用来存放运算结果,如图3所示。
  汇编函数:
 
 
 
  

6结语
  本文介绍的混合编程方法不但适用于TI 5000系列DSP,同样也适用于TI其他系列的DSP ,如2000系列、6000系列,甚至对其他芯片,如51系列单片机,实现混合编程也有很大参考 价值。值得注意的是,为了使混合编程不破坏C语言的结构性,在汇编语言中不要设置除函 数名之外的任何全局变量。

上一页  [1] [2] 


本文关键字:暂无联系方式综合-其它单片机-工控设备 - 综合-其它

《一种TI 5000系列DSP C/C++语言和汇编语言》相关文章>>>