第9章 C语言程序开发.ppt

第9章 C语言程序开发.ppt

ID:48743437

大小:188.50 KB

页数:12页

时间:2020-01-26

第9章 C语言程序开发.ppt_第1页
第9章 C语言程序开发.ppt_第2页
第9章 C语言程序开发.ppt_第3页
第9章 C语言程序开发.ppt_第4页
第9章 C语言程序开发.ppt_第5页
资源描述:

《第9章 C语言程序开发.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章C语言程序开发两种途径:汇编语言和高级C语言开发。汇编开发——编写汇编源程序,经过汇编、连接后生成可执行代码(out),再进行调试、固化;C开发——编写C源程序,用C编译器转换成汇编源程序。南航自动化学院DSP技术应用实验室外壳程序:自动完成编译、汇编和连接全过程;优化器:改善代码,提高C程序效率;内部列表工具:C转换成汇编输出。一、DSP库函数南航自动化学院DSP技术应用实验室C程序借助一些函数来实现I/O、动态存储器分配、字符串操作和数学运算等。这些函数并不是C的一部分,而是由ANSIC提供的标准库函数。C编译器中包含了目标运行支持库rts2xx.lib和源运行支持库rts.

2、src。rts2xx.lib包含ANSIC标准库、系统初始化例程_c_int0,以及允许C访问指定指令的函数和宏;rts.src包含构建目标运行支持库所必需的C和汇编源函数和宏。三、C程序调试C语言程序的调试也可以使用集成调试工具CC2000,调试步骤同汇编程序大致相同。调试时需要以下五种文件:(1).C语言程序(.c)(2).头文件(.h)(3).库文件(rts2xx.lib)(4).命令文件(.cmd)(5).复位和中断向量文件vectors.asm南航自动化学院DSP技术应用实验室1头文件(.h)示例在头文件中,寄存器以指针方式寻址。Volatile关键字用于避免对变量的优化。i

3、oport关键字用于定义需要访问I/O端口空间。格式:ioport类型标识符端口号ioport为定义端口变量的关键字;数据类型必须是字符型、短整型、整型或者无符号型变量;端口号为十六进制的端口编号。南航自动化学院DSP技术应用实验室例下面代码把端口port10h定义为无符号型变量,写port10h,并把它读到b。ioportunsignedport10;/*定义变量访问I/O端口10h*/intfunc(){...port10=a;/*把a写入端口10h*/...b=port10;/*把端口10h读入b*/...}南航自动化学院DSP技术应用实验室(一)C与汇编相互调用C语言缺点:C代

4、码的执行速度和效率在某些情况下不如汇编代码。比如FFT算法,中断处理、对硬件进行控制,C代码效率低,速度也慢。解决措施:C和汇编混合编程。程序主体由C来控制;实时性要求较高或者需要对DSP底层资源进行操作的代码用汇编实现。南航自动化学院DSP技术应用实验室四、C和汇编混合编程4汇编程序和C程序接口南航自动化学院DSP技术应用实验室(1)保护AR0(FP)、AR1(SP)、AR6和AR7(2)保护状态寄存器ARP必须设置为AR1。(3)32位数存储方法(4)用累加器装载函数的返回值(5)汇编模块不能使用.cinit段(6)汇编模块中被C访问的标识符前要加下划线例:若变量x要被C程序访问,

5、必须用_x表示。(7)C和汇编相互引用的变量或函数必须用.global声明三种混合编程方法:(1).独立编写C和汇编模块①独立编写C和汇编程序模块②将C程序编译、汇编后生成目标文件(.obj),汇编程序汇编后生成目标文件;③将所有.obj文件连接成一个完整的文件。(2).直接在C程序中嵌入汇编语句(3).修改汇编代码输出用C程序编程,经编译后生成汇编代码,然后对汇编代码进行优化和修改。(二)混合编程方法南航自动化学院DSP技术应用实验室(1).访问.bss段中变量(2).访问不在.bss段中的变量1C中访问汇编变量编写独立的C和汇编程序时,必须遵循C和汇编接口规则。另外,在C程序中可以

6、访问汇编模块中定义的变量。C程序访问汇编模块中在.bss段中的变量和不在.bss段中的变量时,方法稍有不同。南航自动化学院DSP技术应用实验室例:C程序中引用.bss中变量a).C程序externintvar;/*声明var为全局变量*/var=1;/*引用var*/b).汇编程序.bss_var,1;定义变量_var.global_var;声明_var为全局变量(1).访问.bss段中变量①.用.bss汇编伪指令定义被访问的变量;②.用.global伪指令把该变量声明为外部变量;③.在变量名的前面加下划线“_”;④.在C程序中把该变量声明为全局变量。南航自动化学院DSP技术应用实验室

7、例访问不在.bss段中的变量(a)C程序externfloatsine[];/*说明sine为外部变量*/f=sine[2];/*把sine看作正常数组使用*/(b)汇编程序.global_sine;说明sine为外部变量.sect”sine_tab”;定义一个独立的段_sine:;查找表的初始地址.float0.0.float0.015987.float0.022145(2).访问不在.bss段中的变量要访问汇编中定义的查找表,又不想把它放入

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。