欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

高级语言与汇编语言混合编程的实现方法

时间:2011-04-23  作者:秩名

论文导读:使用C语言开发的DSP程序可读性和可移植性好。而且一些硬件控制功能也不如汇编语言方便。所以常采用混合编程的方法。
关键词:C语言,汇编语言,混合编程
现代电子设备中DSP芯片的开发越来越多地得到应用,使用C语言开发的DSP程序可读性和可移植性好,开发周期短,程序修改方便。但在某些情况下,C代码的效率还是无法与汇编代码的效率相比,而且一些硬件控制功能也不如汇编语言方便,甚至有些操作C语言无法直接实现。因此在DSP的软件开发中常用汇编语言实现对硬件的直接控制或用来编写一些效率要求较高的程序段,但由于汇编语言的移植性和可读性差,所以常采用混合编程的方法,以便达到最佳效果。
混合编程中两种语言相互调用,进行参数传递,共享数据结构及数据信息,但是由于两种语言在程序格式、函数调用、寄存器使用等方面都有不同之处,因此混合编程中主要是要解决二者的接口和参数传递问题。下面以C为例说明混合编程的几种实现方法:
一、直接在C程序中嵌入汇编语句
这种方法比较简洁直观,可以将C程序中无法实现的硬件控制及需要较高效率的关键部分用汇编语句编写,以优化程序。论文参考网。但这种方法的缺点是比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时并不检查或分析所嵌入的汇编语句。在Turbo C中嵌入汇编语句由关键字asm引导,其格式为:
ASM操作码 [操作数],[操作数]
例如在C语言源程序example1.c中嵌入汇编语言的语句
main()
{
int x;
int y;
x=8;y=10;
asmmov ax, [y]
asmadd [x],ax
printf (“x:%d ”,x)
}
上述C语言源程序不能用集成编辑器,因为编辑器tc.exe不支持嵌入式汇编程序,只能用DOS命令行tcc.exe实现。
二、独立的C和汇编模块接口
这种方法是混合编程中常用的方法,关键是要解决好汇编语言与高级语言的数据通讯。在这种方式下两种语言分别编写,分别产生各自的obj文件,然后经过连接,形成一个完整的程序,采用这种方法比较灵活,在使用中要遵循有关的调用规则和寄存器规则。
1、混合编程的规则
1)命名约定: C编译器对C源程序编译时要将其中的变量名、 函数名等标识符前加下划线,而汇编程序在汇编时直接使用,所以被C语言调用的汇编程序有标识符前都要加下划线。
2)声明约定: 在C语言中对C所使用的外部变量、过程、函数均用EXTERN说明:
extern 类型 函数名(参数表);
extern 类型 变量名;
使用前均应放在函数体外进行说明
3)汇编语言的变量名、子程序名等标识符,为了能让其他模块可见必须用public操作符定义它们。如
public   _bof,_array
4)由于C语言对大小写字母的区别,在汇编程序中子程序名和变量名都要使用小写字母。
2、寄存器的使用规则
对于寄存器AX、BX、CX、DX和ES在汇编语言中可任意使用,对于寄存器BP、SP、DS、CS和SS,如果C语言要求保护,在汇编语言子程序中使用它们之前,先进行保护,使用后再加以恢复。对于指针寄存器SI和DI,C语言用作寄存器变量,因此在汇编语言程序中使用它们之前都要进行保护,返回时再将其恢复。
3、混合编程的参数传递和返回
C语言程序调用汇编语言子程序时,参数通过堆栈传递给汇编程序。参数由C传递给汇编时,参数以其在参数表中出现的反序入栈,然后再存入主程序的返回地址IP的值。当被调用函数或子程序运行结束后,C主程序会自动调整堆栈指针SP使之恢复到压入参数之前的状态,不需要程序员平衡堆栈。但编程时应注意不同类型的参数占用字节数也不同如int占2个字节,real占8个字节,同时还要注意近调用和远调用时段地址CS和偏移地址IP在栈中占用字节数也不同。 当汇编子程序中有值返回时,若返回的结果是短整数,放在AX中,若为长整数放在DX:AX中。
4、编译连接
分别用C语言和汇编语言写出源程序后,下面就是要进行编译、连接生成可执行文件,这时可用Turbo C的tcc命令来完成。
其格式为:tcc [编译参数表] 文件名1文件名2…..文件名n
其功能是通过设置不同的编译参数将指定的各个文件编译连接。当文件中有扩展名为.asm的汇编源程序时,tcc命令立即调用tasm.exe宏汇编程序,对.asm源程序进行汇编。论文参考网。同时要注意如果用户使用的是masm.exe汇编程序时,要将masm.exe改名为tasm.exe,并和tcc命令存放在同一目录下。
三、利用codecomposer集成开发环境进行修改
这是一种简便易行快速优化C语言代码的方法,在Code Composer集成开发环境中,选择View菜单下的MixedSource/ASM选项即可看到交叉列表的汇编程序。在所生成的语句中,每个C语句的下面就是C编译器对该C语句编译所生成的汇编语句。论文参考网。通过查看交叉列表的汇编程序,可以对某些编译不是很优但却是比较关键的汇编语句进行修改。修改汇编语句时,必须严格遵守不破坏C环境的原则。

参考文献:
郭咏梅.C语言程序与汇编语言程序的接口分析[J].电脑学习,2002.(1):26-29
董守田.C语言与汇编语言的接口设计.农机化学研究.2003年第3期
 

查看相关论文专题
加入收藏  打印本文
上一篇论文:概念格构造算法分析
下一篇论文:高速公路视频传输联网关键技术研究
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文