目的:学习开发工具的使用,C优化器的使用

Slides:



Advertisements
Similar presentations
Assembly Language Programming 湛江师范学院 汇编语言程序设计实验课件 主讲教师:王 晓 晔.
Advertisements

实验四 利用中规模芯片设计时序电路(二).
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
Hadoop I/O By ShiChaojie.
第二讲 搭建Java Web开发环境 主讲人:孙娜
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第二章 Java语言基础.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
CPU结构和功能.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
程序设计工具实习 Software Program Tool
第7章 在C/C++中使用汇编 罗文坚 中国科大 计算机学院
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
第十讲 C的性能优化 BIT/TI 第十讲 C的性能优化
姚金宇 MIT SCHEME 使用说明 姚金宇
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
实验七 安全FTP服务器实验 2019/4/28.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
2019/5/8 第2章 数据分析软件介绍.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第9章 多媒体技术 掌握 Windows 画图工具的基本操作; 掌握 Windows 音频工具进行音频播放;
Python 环境搭建 基于Anaconda和VSCode.
本节内容 结构体.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第十七讲 密码执行(1).
插入排序的正确性证明 以及各种改进方法.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
FPGA系统设计与实践 本章小结(第5章).
Presentation transcript:

目的:学习开发工具的使用,C优化器的使用 Chap一介绍过,C是编程效率最高的语言。要想让编译后的C代码具有较高的效率,关键在编译效率。对C6000而言,C是用得最多的编程方法。经过循环优化后,其效率可达70-80%。有些算法的C程序效率甚至与手工汇编相当。(线性汇编95-100%) 由于C用得多,而且多数人有C的编程经验,因此编程就从C开始介绍。所以即使完全没有DSPs编程经验的技术人员也可以立即开始编程工作。 BIT/TI 第三讲 C语言初步

建议的程序开发流程 C程序 C程序优化 第十讲 用线性汇编改 写关键代码段 第九讲 BIT/TI 第三讲 C语言初步 从上面TI所建议的程序开发流程也可以看出,用户程序用C程序实现,这样可以实现开发效率与程序效率的较好统一。如果要采用汇编语言实现关键的代码段,也最好是在C的框架下。因此,本章首先介绍C程序的开发过程,以及相关开发工具的使用。 第九讲 BIT/TI 第三讲 C语言初步

学习内容 一、代码产生工具 二、C优化器 三、C的数据类型 四、实验 BIT/TI 第三讲 C语言初步 三、C语言符合ANSI C的标准,但是要注意C6x对数据的定义。 四、掌握代码的编译、基本调试方法和性能测试方法 BIT/TI 第三讲 C语言初步

C程序、标准汇编、线性汇编的编译 sa asm c BIT/TI 第三讲 C语言初步 *.asm C程序经过C编译器生成C6000汇编程序,所输出的汇编文件作为汇编器的输入。 BIT/TI 第三讲 C语言初步

一、C的代码产生工具 新 BIT/TI 第三讲 C语言初步 初次接触C6x系列DSPs,完全可以不必考虑硬件结构等,只要有PC上的编程经验,就可以直接用标准ANSI C语言编写所需要的算法程序。不同的是,这里要用C6x的C编译器对程序进行编译。最后生成的可执行文件为.out。 代码产生工具包括C编译器(cl6x.exe)、汇编器(asm6x.exe)和连接器(lnk6x.exe)和运行支持库(rts6201.lib,rts6701.lib,rts6201e.lib,rts6701e.lib)。 编译、汇编和连接是三个相互独立的过程,有三个不同的程序完成。为了方便,可以用壳程序cl6x.exe把这三个过程用一个命令完成。 除了标准C函数外,还包括编译器用于管理C环境的C函数。如_c_int00就是一个重要的库函数 ANSI C 标准函数库 C I/O library: printf, scanf, fopen, getchar等,给程序调试带来方便。 Intrinsic函数 系统启动程序 _c_int00:用于初始化C环境,包括数据初始化。 BIT/TI 第三讲 C语言初步

编译命令 编译器选项 CL6x -g file1.c file2.asm file.sa file3 -s -as -z … ... 标准汇编直 接调用汇编器 -z调用连接器 线性汇编调用汇编优化器 无扩展名默认为C文件 代码产生工具的使用: 在命令行使用 代码设计工作室 我们看到,在命令行除了输入、输出文件外,还有一些选项用来控制整个编译过程,包括编译、汇编、连接。其中某些选项会影响到编译后的程序效率。在稍后我们将陆续介绍一些。 壳命令默认地执行编译和汇编两个过程,使用选项-z可以调用连接器。 除了连接器选项-z必须在命令行的最后,以及与连接有关的选项必须在-z之后外,命令行的其它编译和汇编选项可以任意组合。 .sa:线性汇编程序文件。是C6000特殊的一个地方,使用线性汇编可以在保证代码效率的前提下大大提高编程效率。与标准汇编相比,线性汇编把一些比较烦琐的,对代码编译效率影响不大的工作用编译工具自动完成,减轻编程者的工作量,可以大大提高编程效率,具体使用方法在第九讲介绍。下面是线性汇编程序的编译过程。 BIT/TI 第三讲 C语言初步

连接器选项 CL6x -g -s file.c -z link.cmd -o file.out -l rts6201.lib -z调用连接器 连接器命令文件 运行支持库 输出文件名 编译器生成的.obj文件都是浮动地址的COFF格式文件,需要经过连接生成一个绝对地址的可执行文件。因此需要用连接器命令文件说明一些与连接有关的目标系统信息。并且如果程序中调用了库函数,还需要连接运行支持库。 BIT/TI 第三讲 C语言初步

常用的编译选项 BIT/TI 第三讲 C语言初步 前两个选项-g,-s使得调试更容易;选项–g通过在目标文件内加入与调试有关的一些信息,使能符号调试。选项-s把用户的C代码作为注释与编译器产生的汇编代码放在C编译器输出的汇编文件内(.asm)。但是-g和-s对C优化器的优化性能会有一些影响。 -o3和-pm是与C优化器有关的选项,后面介绍;连接器选项在第五章介绍。 上面所介绍的编译过程将在实验中练习。 BIT/TI 第三讲 C语言初步

二、C优化器 优化器选项 有软件流水功能 经过C优化器的优化,以及其它C语言优化后, C代码效率可达70-80% 用优化选项启动 C6x的C编译器能够达到很高的编译效率,关键在于它的C优化器。C6x优化C编译器是针对C6x特有的VLIW结构设计(VLIW结构能否发挥性能,一个关键就在C编译器),编译效率很高。辅以C程序的其它优化方法,程序效率能与手写媲美。本讲介绍用C优化器对C程序进行优化,第十章还将专门介绍C的其它优化方法。 从-o2开始,优化器所具有的软件流水功能,是针对循环代码的一种优化技术。它是C编译器能够产生令人难以置信的高效率的主要原因。第8讲将产生软件流水的方法。 软件流水概念:与指令流水的概念相似。同一个指令的执行分为几个阶段,即若干级流水。不同指令的不同流水在流水线上并行执行。在一个循环体中有若干条指令,这些指令之间一般具有很强的相关性,很难充分利用C6000的8个功能单元并行执行指令。采用软件流水技术,使得不同次循环的指令并行执行。 通常C优化器是对每个输入文件分别进行优化的。而如果优化能对整个程序进行,则效率通常会更高。选项-pm使得语法分析器在启动优化器和代码产生器之前,把所有的C文件组合成一个文件。 上面介绍了C优化器的功能,下面介绍使用方法。 有软件流水功能 BIT/TI 第三讲 C语言初步

C优化器的使用步骤-建议 cl6x -g -s file.c -z cl6x -g -o file.c -z 不带优化选项进行编译(功能验证) cl6x -g -s file.c -z 用优化选项-o2进行编译(-o2是与符号调试兼容的最高优化级别) cl6x -g -o file.c -z 用最高级别优化选项进行编译 cl6x -o3 -pm file.c -z 程序进行优化前,必须首先保证程序的功能正确,即必须在调试器环境下调试正确后,再使用C优化器。上面是建议的C优化器优化步骤: 编程的第一步是要保证代码的功能正确,因此先不要使用优化选项。然后将选项-g和-o结合使用,产生与符号调试不冲突的前提下最大程度优化的代码。最后再进行最高级别的优化(由于符号调试无法进行,通常需要在代码内加入测试代码以验证优化后的代码功能)。 注意 以上每个步骤都需要进行功能验证 BIT/TI 第三讲 C语言初步

三、C62xx C 数据类型 注意 BIT/TI 第三讲 C语言初步 用C语言编程时,对各种数据类型的定义要清楚: short 16位,int 32位,后面要介绍的字长优化就利用这一特性。 long长度(40),这是因为C62xx的支持40位的源或目操作数(两个32位寄存器)。注意汇编器产生的long数据是32位的。乘积累加运算时用long存储累加和,防止溢出(利用多出的8位作警戒位)。 加性溢出的处理措施: 1、采用饱和算术指令,并用寄存器CSR检测饱和 2、利用long数据多出的8位作guard位 3、增益小于1的系统,中间结果溢出不影响最后结果。 Pointer-C62xx CPU 支持32-bit字节寻址,因此pointer 类型可以访问C62xx的整个4G-byte地址空间。 BIT/TI 第三讲 C语言初步

实验 实验内容:两个数组点积运算 实验目的: 掌握编译过程、C优化器的使用 熟悉Simulator开发环境 学习程序性能测试方法 本章内容介绍了C程序的开发流程,并对C程序的优化有了初步认识。在第十章还将对C程序的优化设计作更深入的探讨。 BIT/TI 第三讲 C语言初步

代码开发流程 BIT/TI