![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 基于TMS320C62X的DSP通用混合编程方法 | |||||
作者:高秀娟 杨… 文章来源:《现代电子技术》 点击数: 更新时间:2007-9-12 ![]() |
|||||
|
C语言编程具有开发周期短、可读性强,可移植性好和修改方便等优点,但是C程序反汇编生成的汇编代码往往较长。直接用汇编语言编程虽然编制的程序较短,但是开发周期长,修改也不方便。较好的解决方法是程序的框架或主体部分用C语言编写,对那些耗时多运算密集的模块用汇编语言编写。这种混合编程的方法将C语言和汇编语言的优点结合起来,既能保证程序的结构化和可读性又能保证应用的实时性。 2 寄存器使用规则 3 函数调用规则
当一个函数(父函数)调用另一个函数(子函数)时需执行以下任务: (1)按2节的寄存器使用规则把需传递的函数参数放入寄存器或堆栈。 例1寄存器参数规则举例 (2)如果A0~A9及B0~B9的值在函数调用后还有用,调用时需将他们压人堆栈保存。 (3)父函数调用子函数。 (4)返回时,主函数通过增加堆栈指针地址来释放函数调用开始处参数所站空间。 3.2被调用函数如何响应 4 在C/C++程序中插入汇编语言 4.1使用汇编模块 ![]() 此例中asmfunc外部声明是可选项,因为返回类型为整型。与C/C++函数一样,只有返回非整型值或传递非整型参数时需要声明汇编函数。 4.2 用内联函数访问汇编语言 ![]() 4.3使用嵌入汇编语言 在C程序中嵌入汇编语句是一种C和汇编直接接口的方法,他可以在C中实现C语言无法实现的一些硬件控制功能,比如对寄存器的修改和读取等,但是C编译器在编译时并不检查嵌入的汇编语句,所以这个方法有时候会破坏C运行环境。使用方法是在汇编语句的左右加上双引号,用圆括弧将汇编语句括起来,加上asm标示符,如: ![]() 注意结尾要加上语句结束的分号符。 4.4 从C模块访问汇编语言变量 4.4.1 访问汇编全局变量 ![]() 4.4.2访问汇编常量 在汇编语言中,可以用.set, .det和.global来定义全局常量,或在连接命令文件里用连接分配语句定义他们。这些长量只有使用特殊操作才可由C访问,对于C或汇编中定义的常规变量符号表包括变量值的地址,对于汇编常量符号表则包括常量值。则编译器不能辨别符号表中哪些项是值,哪些项是地址。如果想通过名字访问汇编常量,则编译器企图从符号表中的地址获取值。要避免不必要的获取,必须使用一(取地址)操作取值。即如果X是汇编常量,他在C中的值是&X。可以使用casts和#define简化程序中这些符号的使用。 ![]() 由于仅用到存储在符号表中的符号的值,符号的声明类型不再重要。本例中用的是int型。 5 结 语 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| TMS320C62x 图像库 TMS320C62x/TMS320C64x Fast… 利用TMS320C62x DSP来实现WC… 利用TMS320C62x DSP来实现WC… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|