求助个小代码,关于C语言和汇编语言代码的混合代码

技术小站:
地点:深圳
时间:11月2日 14:00 - 17:00
地点:深圳
时间:11月8日 13:00 - 17:30
地点:东莞
时间:11月9日 14:00 - 17:00
地点:西安
时间:11月16日 14:00 - 17:00
零基础快速成为Android项目开发工程师
ARM裸机开发实战(第1期加强版)
张飞硬件设计与开发视频教程
从0到1自己动手写嵌入式操作系统
张飞电子视频全套共十部
讲师:灵训教育
讲师:林超文
讲师:李述铜
讲师:张飞
移入鼠标可放大二维码
编写一个汇编和C混合的DSP程序
来源:www.elecfans.co
作者:本站日 00:15
[导读] 实验4 :编写一个汇编和C混合的DSP程序一.实验目的1.在了解纯C语言程序工程和汇编语言程序工程结构的基础上,学习在C工程中加入汇编编程的混合编程
实验4 :编写一个汇编和C混合的DSP程序一.实验目的1.在了解纯C语言程序工程和汇编语言程序工程结构的基础上,学习在C工程中加入汇编编程的混合编程方法。2.了解混合编程的注意事项。3.理解混合编程的必要性和在什么情况下要采用混合编程。二.实验原理1.使用C语言开发应用程序的优缺点*优点:-易于开发和维护。由于用C语言书写接近自然语言,其可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。-可移植性强。-不容易发生流水线冲突。编译器能提供完善的解决流水线冲突的结果。-有大量现存的算法可利用。-适用于人机界面的开发。*缺点:-代码量大。-程序效率较低。-优化代码存在一定困难。综上所述,我们一般用C语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法。2.使用汇编语言开发应用程序的优缺点*优点:-更能发挥系统特点。由于汇编语言掌控系统硬件的能力强于C语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致。-代码精练,效率高。用汇编语言设计的程序,代码短、不容易产生冗余。-代码量小。*缺点:-可读性差。不利于复杂算法的开发和实现。-可移植性差。-容易产生流水线冲突。由于排除冲突需要靠人来辅助完成,这要求编程人员有较为丰富的开发经验和对硬件工作机制的深刻理解。3.如何混合编程(1)混合工程:在工程中可以同时包含C语言程序和汇编语言程序,无需更改编译选项。一般地,我们使用C程序为主,加入汇编语言程序模块。(2)使用模块技术:在应用程序中划分出比较清晰的模块,不同模块可采用不同语言设计。强调效率和速度的模块采用汇编设计。尽量少用汇编语言设计程序。(3)如何找出需要用汇编程序设计的模块:
-用C语言完成设计后,运用CCS的软件仿真功能,充分测试程序,找到程序运行中的瓶颈(速度方面的和空间方面的)。-再使用分块仿真技术尽可能缩小模块。-找到的模块单独写成子程序,存入独立的文件中。-由于CCS编译器能产生C语言程序到汇编程序的中间文件,观察需要优化的模块的汇编结果,进行人工优化。-最后运用人工优化后形成的汇编程序模块,代替原来需要优化的C语言模块,进行编译。-程序中可使用内嵌汇编。编译器可直接使用内嵌的汇编语句生成最终代码。但需要语句中双引号中为合法的汇编语句。4.何时使用混合编程技术-当程序中需要操作与硬件密切相关的设备,而用C语言较难实现时。比如:在中断程序设计时需要设置中断向量表,向量表中空间有限用C语言语句有困难,且需向量表要在内存中精确定位,这时可将设置中断向量表的部分用汇编语言代替。-当需要绕开C编译器的规定,进行特殊操作时。比如:C语言规定,程序不能访问程序代码区,而系统功能需要进行类似访问时可采用限制较小的汇编语言程序设计。-当需要提高模块的效率(包括空间上和时间上两方面的),而C语言程序无法达到要求时。5.实验程序解释实验程序提供了一个使用C与汇编程序混合编程的实例,是一个用汇编语言模块优化自己编制的应用程序的实例。首先是一个纯用C语言开发的工程,再根据假设,需要将其中一个模块改造成用汇编语言模块优化的模块。通过实验过程,用户可充分了解混合编程可以采取的步骤和方法。三. 实验设备计算机,ICETEK-F2812-EDU实验箱(或ICETEK 仿真器+ICETEK-F2812-A系统板+相关连线及电源)。四.实验内容与步骤1.实验准备-设置软件仿真模式,参看:第一部分、四、1。-启动CCS。2.打开工程、浏览程序内容、编译生成和下载可执行代码、(1)打开工程:选择菜单Project-&Open…,选择打开工程文件C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\lab0104-CAsm\CASM.pjt(2)展开工程管理窗口中CASM工程,双击Source下的CProgram.c项,打开CProgram.c源程序窗口。可以看到,程序完成了一个简单的运算,它先开设了三个全局变量x、y、z,然后分别给x 和y赋初值,再在循环中计算x+y,结果赋值给z。(3)编译并下载程序(如图4-1 所示):此设置完成在每次编译完成后将程序自动下载到DSP上。选择菜单Project-&Build All,编译、连接和下载程序。(4)运行程序,观察结果:在程序中有“在此加软件断点”注释的语句上加软件断点;将变量z 加入变量观察窗口(watch window);运行程序到断点,观察变量z 的结果值。
图4-1 设置自动下载out文件3.修改程序(1)修改算法部分成单独子程序:假设在循环中进行的运算是需要用汇编语言程序模块优化的部分。首先将“z=x+y;”语句修改成“z=add(x,y);”,在程序头上,变量定义之前加上一行“int add(int a,int b);”,在程序末尾,添加如下子程序:int add(int a,int b){return(a+b);}如此,将算法搬移到一个C语言的子程序模块中实现。修改完成后,可以编译、下载、运行到断点,观察运行结果,判断是否子程序能完全与原程序一样完成算法。(2)将子程序移入add.c:打开一个新的空的源文件窗口,将main函数后的子程序复制到窗口中;注释main函数后面的子程序(在子程序前一行加“/*”,在子程序结尾行后加“*/”);将新窗口中的内容保存为文件add.c。(3)将add.c加入工程,编译、下载、运行,检查结果,保证运算无误。(4)选择菜单Project-&Build Options…,进行如下设置(如图4-2所示):(5)重新编译工程;打开C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\lab0104-CAsm\add.asm;在其中的“.line2”行、“.line3”行、“.line 4”行头上分别加分号,即注释这3 个语句。
图4-2 参数设置(6)将工程中的add.c换成add.asm:在工程管理窗口中用鼠标右键单击add.c,选择“Removefrom Project”;用鼠标右键单击CASM.pjt,选择“Add Files to Project…”,选择C:\ICETEK-F2812-EDULab\Lab0104-CASM\add.asm。(7)重新编译、下载、运行程序并观察结果。由于add.asm是CCS编译器从add.c编译得来的,下面要做的就是手工调整add.asm中的汇编代码,从而实现优化处理。4.退出CCS五.预习要求1.了解纯C语言程序工程和汇编语言程序工程结构2.了解混合编程的方法。六.注意事项1.在汇编程序中使用其他C语言模块中定义的变量或函数名称时,需要在引用的名称前加一下划线。如:C中定义的变量为x,在汇编中引用时要用_x。2.汇编语言写的子程序需要符合C语言的调用规则,尤其是在默认的辅助寄存器使用上和栈的使用上要求兼容。3.在汇编语言模块中,需要编程者自己消除流水线冲突。4.在使用内嵌汇编技术时,需要考虑以下内容:a. 要非常小心地处理,以免破坏C语言操作环境。编译器在遇到内嵌汇编语句时,不会对其中的汇编语句进行分析处理。b.避免从内嵌汇编语句跳转到C语言模块中,那将极容易造成寄存器使用上的混乱,从而产生难以预料的结果。c.不要在内嵌汇编语句中改变C语言模块中变量的值,但可以安全地读取它们的值。d.在汇编程序中不要使用内嵌汇编。七.思考题使用混合编程法完成计算sin(2.3π)+cos(1.7π)的值。八.实验报告要求1.说明修改程序的方法和前后顺序2.说明重新编译的方法和结果的观察情况
DSP程序相关文章
DSP程序相关下载
技术交流、积极发言! 发表评请遵守相关规定。
Phononic创始人兼首席执行官Tony Atti博士指出,Phononic打破技术瓶颈,研发出一款小尺寸的半导体制冷芯片,可智能去热加热,该款器件可以广泛应用于电子、...
作为承载万物互联的蓝牙、Wi-Fi、ZigBee等主流的无线传输技术在迎接物联网时代路上正加速更迭,并给细分市场带来更大的应用空间,然而这些技术对同时...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-涓婁紶鍙戝竷
禄 c54鍙樻垚鎸囧崡锛屽寘鎷琧璇?█缂栫▼椋庢牸锛屾眹缂栫殑娣峰悎缂栫▼锛屼互鍙婁唬鐮佷紭鍖

我要回帖

更多关于 汇编语言代码 的文章

 

随机推荐