- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.4.10 内联函数扩展 【例3.3】内联函数扩展。 (1)C源代码 int plus (int x, int y) { return x + y; } main () { int a = 3; int b = 4; int c = 5; return plus (a, plus (b, c)); } 3.4.10 内联函数扩展 (2)编译器输出 FP .set A15 DP .set B14 SP .set B15 ; opt6x –O3 t2.if t2.opt .sect ”.text” .global _main; _main: ;ENTERING plus() ;LEAVING plus() ;ENTERING plus() ;LEAVING plus() B .S2 B3 NOP 4 MVK .S1 12,A4 ; BRANCH OCCURS 3.4.11 寄存器跟踪与分配 【例3.4】寄存器跟踪/指派。 (1)C源代码 int x, y; main() { x += 1; y = x; } 3.4.11 寄存器跟踪与分配 (2) 编译器输出 FP .set A15 DP .set B14 SP .set B15 ; opt6x –O2 t3.if t3.opt .sect ”.text” .global _main _main: LDW .D2 *+B14(_x),B4 NOP 1 B .S2 B3 NOP 2 ADD .L2 1,B4,B4 STW .D2 B4,*+B14(_y) STW .D2 B4,*+B14(_x) ; BRANCH OCCURS .global _x .bss _x,4,4 .global _y .bss _y,4,4 3.5 使用汇编优化器 3.5.1 增强性能的代码开发流程 用户在编写和调试代码时通过使用如图3-6所示的开发流程,可以获得最优的代码性能。 3.5.2 线性汇编知识 1. 线性汇编语句的格式 2. 为线性汇编指定功能单元 3. 使用线性汇编注释 4. 汇编优化器伪指令 第3章 程序开发基础 3.1 软件开发工具概述 3.2 C/C++编译器概述 3.3 使用C/C++编译器 3.4 优化代码 3.5 使用汇编优化器 3.1 软件开发工具概述 源程序编写完毕后,选择合适开发工具和环境,TMS320C6000系列DSP提供非集成的工作环境和集成的工作环境。对于非集成的工作环境软件开发流程框图如图3-1所示。 3.2 C/C++编译器概述 3.2.1 ISO标准 (1)ISO标准C (2)ISO标准C++ (3)ISO标准运行时支持 3.2.2 输出文件 以下将描述属于编译器输出文件的特征: (1) 汇编源文件输出 (2) COFF目标文件 (3) EPROM编程器数据文件 3.2.3 编译器接口 下面将描述属于编程器接口的特征: (1) 编译程序 编译工具包括一个编程程序,可以一步完成编译、汇编优化、汇编以及连接程序的工作。 (2) 灵活的汇编语言接口 编译器具有简单的调用约定。只要遵循该约定,就可以写出可互相调用的C函数及汇编函数。 3.2.4 编译器操作 下面将描述属于汇编器操作的特征: (1) 集成的预处理器 C/C++预处理器是与语法分析器集成在一起的,可以便于更快的编译。用户可以只进行预处理,也可以把预处理列表保留下来。 (2) 优化 编译器采用复杂的优化方法和高级的技术把C/C++代码转换为高效、紧凑的汇编代码。 3.2.5 编译器工具 下面将描述编译器工具的特点: (1) 源码交叠工具 (2) 建库工具 (3) 独立软件仿真器 (4) C/C++名变换工具 3.3 使用C/C++编译器 3.3.1 编译器 编译器完成如下的步骤: 编译器包括语法分析器和优化器。编译器以C/C++源代码作为输入,生成TMS320C6x的汇编源代码。用户可以使用一个命令来编译C和C++文件。编译器采用文件名扩展约定以区别不同的文件类型; 汇编器产生COFF目标文件; 连接器连接目标文件,生成一个可执行的目标文件,连接步骤是可选的,用户可以先分别编译和汇编若干模块,最后再把所有的模块连接起来。 3.3.1 编译器 编译器默认不执行连接,可以通过设置-z编译选项执行连接。图3-2表示了编译器在使用和不使用连接器时的各自途径。 3.3.2 调用C/C++编译器 调用编译器时输入: cl6x [options] [filenames] [–z [link_options
文档评论(0)