TMS320C5535 DSP混合编程详解
2015-07-06 09:32
211 查看
TMS320C5535 DSP混合编程详解
1.混合编程简介
在DSP开发过程中,特别是开发的是第一次接触的DSP芯片的时候,开发人员通常会使用C语言来进行开发工作。当发现算法不能满足系统的时间要求时,就需要对代码进行优化,一种方法是使用DSPLIB库中优化过的函数来提高算法效率,另外一种方法就是将程序中耗时的算法用汇编语言实现,然后在C语言中调用,即本文介绍的混合编程。
对运算时间要求不高的部分使用C语言来实现,对运算速度较高的部分使用汇编语言来实现。
混合编程的关键在于C语言和汇编语言的接口,即如何在一种语言里面使用另外一种语言中的函数、变量和函数返回值。考虑到DSP开发使用的较多的是C语言,那下面就主要讨论如何在C语言中调用汇编函数。
2.混合编程具体方法
注:DSP平台开发环境为CCS5.4
(1)汇编函数的格式
首先新建一个.asm文件,具体格式如下图所示,以函数void
myflip(Int32 *,Int32 *)为例说明。
注:关键字.global前面有一个空格
(2)汇编函数参数和返回值
C程序中传入汇编函数中的参数,以及从汇编函数中返回到C程序中的值都是存放在特定的寄存器中的,要分别满足下表中的寄存器规则和返回值规则。
寄存器规则
返回值规则
下面举例说明寄存器规则和返回值规则的含义:
例如在C程序中调用汇编函数“int func1(int a)”,这是一个简单的函数,一个int形参数和int型的返回值。根据寄存器规则可知int型参数存放在寄存器T0中,然后根据返回值规则第二行可知,返回值也是存于T0寄存器中。同理,如果调用“int func2(int a,long b,int*p)”,则传入的实参会分别存于寄存器T0,AC0和AR0中,返回值则存于T0中。
(3)汇编函数调用方法
将汇编函数按照上述的规则写好之后,然后在C程序中进行声明,然后就可以直接调用汇编函数了。
1.混合编程简介
在DSP开发过程中,特别是开发的是第一次接触的DSP芯片的时候,开发人员通常会使用C语言来进行开发工作。当发现算法不能满足系统的时间要求时,就需要对代码进行优化,一种方法是使用DSPLIB库中优化过的函数来提高算法效率,另外一种方法就是将程序中耗时的算法用汇编语言实现,然后在C语言中调用,即本文介绍的混合编程。
对运算时间要求不高的部分使用C语言来实现,对运算速度较高的部分使用汇编语言来实现。
混合编程的关键在于C语言和汇编语言的接口,即如何在一种语言里面使用另外一种语言中的函数、变量和函数返回值。考虑到DSP开发使用的较多的是C语言,那下面就主要讨论如何在C语言中调用汇编函数。
2.混合编程具体方法
注:DSP平台开发环境为CCS5.4
(1)汇编函数的格式
首先新建一个.asm文件,具体格式如下图所示,以函数void
myflip(Int32 *,Int32 *)为例说明。
注:关键字.global前面有一个空格
(2)汇编函数参数和返回值
C程序中传入汇编函数中的参数,以及从汇编函数中返回到C程序中的值都是存放在特定的寄存器中的,要分别满足下表中的寄存器规则和返回值规则。
寄存器规则
返回值规则
下面举例说明寄存器规则和返回值规则的含义:
例如在C程序中调用汇编函数“int func1(int a)”,这是一个简单的函数,一个int形参数和int型的返回值。根据寄存器规则可知int型参数存放在寄存器T0中,然后根据返回值规则第二行可知,返回值也是存于T0寄存器中。同理,如果调用“int func2(int a,long b,int*p)”,则传入的实参会分别存于寄存器T0,AC0和AR0中,返回值则存于T0中。
(3)汇编函数调用方法
将汇编函数按照上述的规则写好之后,然后在C程序中进行声明,然后就可以直接调用汇编函数了。
相关文章推荐
- Python内置函数清单
- Python简史
- python获取文件扩展名的方法
- Java开源工具iText生成PDF简单实例
- Spring(之一)--基本用法
- 大型高性能ASP.NET系统架构设计
- java正则表达式语法大全
- thinkphp模版页面无法识别css文件中的模板替换
- 使用git push到github时有大文件的错误
- 黑马程序员——C语言之选择排序、折半查找法与二维数组
- 【Spring】AOP - 面向切面
- 【Zendstudio】如何利用zendstudio新建 或导入php项目
- C++ Virtual详解
- python创建临时文件夹的方法
- Ubuntu下安装PHP Mcrypt扩展
- C#编写简单的聊天程序
- C#编写简单的聊天程序
- 最常用的两种C++序列化方案的使用心得(protobuf和boost serialization)
- javaee jsp中servlet发生java.lang.ClassNotFoundException可能原因
- thinkphp验证码在服务器显示不了