C语言与语言混合编程DSP设计(推荐)_dspc语言程序设计
C语言与语言混合编程DSP设计(推荐)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“dspc语言程序设计”。
实验2:C与汇编语言混合编程
一.实验目的掌握一种典型的C语言与汇编语言的混合编程方法。
二.实验设备
PC兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。
三.实验原理
1.C语言和汇编语言混合编程技术
在CCS环境中,工程可以同时包含C语言程序和汇编语言程序。在软件开发工作中,通常以C程序为主,在C程序框架中加入汇编语言程序模块。不同模块可采用不同语言设计,尽量少用汇编语言设计程序。通常对于下述模块采用汇编设计:
(1)强调处理速度的模块。
(2)中断程序设计时设置中断向量表。
(3)当需要绕开C编译器的规定,进行特殊操作时。比如:C语言规定,程序不能访问程序代码区,而系统功能需要进行类似访问时可采用限制较小的汇编语言程序设计。2.进行混合编程的方法
(1)用C语言完成设计后,运用CCS的软件仿真功能,充分测试程序,找到影响程序运行速度的瓶颈。
(2)通过仿真尽可能缩小模块。
(3)将找到的模块单独写成C语言子程序,存入独立的文件中。
(4)采用CCS产生与该模块C语言程序相对应的汇编程序。(5)观察需要优化的模块的汇编结果,进行人工优化。
(6)最后运用人工优化后形成的汇编程序模块,代替原来的C语言模块,进行编译。
四.实验步骤
1.启动Code Composer Studio。2.建立工程lab2。
3.建立lab2.c,输入以下内容:
int a,b,c;main(){
} a=3;b=4;while(1){ c=a+b;
}
4.建立lab2.cmd,输入以下内容:
lab2.obj-stack 1024-sytack 1024 MEMORY {
} DARAM: o=0x100, l=0x7f00 DARAM2: o=0x8000, l=0x7f00 SECTIONS {
}.text: {} > DARAM.stack: {} > DARAM.sytack: {} > DARAM.cinit: {} > DARAM2.pinit: {} > DARAM2.b: {} > SARAM
5.建立配置文件lab2.ccxml(选择C55xx Simulater模式)。6.点击调试(DEBUG)工具按钮 7.运行程序,观察结果。
8.第一次修改程序,将主程序中所关心的算法部分单独建立一个子程序模块。
(1)修改算法部分(本实验中为加法运算)为单独的子程序:首先将“c=a+b;”语句修改成“c=add(a,b);”,在程序头上,变量定义之前加上一行“int add(int x,int y);”,在程序末尾,添加如下子程序:
int add(int x,int y){
return x+y;} 这样,将算法搬移到一个C语言的子程序模块中实现。
(2)点击按钮,完成编译、链接、下载程序,进入DEBUG界面。运行程序,观,编译、链接、下载程序,进入DEBUG界面。
察运行结果,判断子程序是否能完全与原程序一样完成算法。
9.第二次修改程序,为所关心的算法模块单独建立一个C文件。
(1)将子程序移入add1.c:打开一个新的空的源文件窗口,将main函数后的子程序复制到窗口中;注释main函数后面的子程序(在子程序前一行加“/*”,在子程序结尾行后加“*/”);将新窗口中的内容保存为文件add1.c。
(2)将add1.c加入工程,编译、链接、下载、运行,检查结果,保证运算无误。10.第三次修改程序,将C模块换为汇编模块。
(1)首先,利用汇编器选项(-k)由算法模块C程序自动产生相应的汇编程序。执行菜单命令ProjectProperties,弹出对话框,进行如下设置: ①选择菜单③单击选择复选框②选择此项④单击确定设置⑤完成设置
(2)重新编译、下载、运行程序并观察结果。打开所生成的add1.asm,删除其中的冗余项。
(3)将工程中的add1.c换成add1.asm。
(4)重新编译、下载、运行程序并观察结果。11.第四次修改程序,对汇编模块进行优化。(1)对add1.asm进行优化。
(2)重新编译、下载、运行程序并观察结果。(3)重复(1)、(2),使add1.asm尽量优化。
12.退出CCS。
五.实验结果
六.问题与思考
(1)如何获得C程序相应的汇编代码?除了本实验讲述的方法,你还能想到什么方法?