C语言与ASM以及线性汇编初步.ppt
《C语言与ASM以及线性汇编初步.ppt》由会员分享,可在线阅读,更多相关《C语言与ASM以及线性汇编初步.ppt(90页珍藏版)》请在三一办公上搜索。
1、C语言与ASM以及线性汇编初步,牛金海等,主要内容,C语言、ASAM和线性汇编三种编程工具的比较指令集概述C语言编程初步和实验-学习开发工具的使用,C代码性能的优化的使用(变量声明两种变量访问方式;C优化器选项;Intrinsics;字访问)ASAM汇编语言初步和实验学习用汇编语言编写简单程序线性汇编编写C可调用的汇编程序,三种开发工具的比较-C、ASM、线性汇编,三种开发工具的比较,TI的DSP软件设计可采用有C/C+语言(.c)、汇编语言(.asm)和线性汇编(C语言和汇编语言的混合编程,.)。用语言开发应用程序优缺点:优点:易于开发和维护,用C语言书写接近自然语言,可读性强、利于理解;可
2、移植性强;不容易发生流水线冲突;有大量现存算法可用;适用于的执行效率相对较低,不能满足实时性的要求。线性汇人机界面的开发。缺点:代码量大;程序效率较低;优化代码存在一定困难。一般用C语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法。编可把两者优点有效结合起来,设计出性价比最好、开发周期较短、比较复杂的系统,已是在C62XX上最流行的编程方法。,用汇编语言开发应用程序的优缺点:优点:更能发挥系统特点,汇编语言设计出的程序更贴近硬件特性,往往能将硬件效能发挥到极致;代码精练、不易产生冗余、效率高;代码量小。缺点:可读性差,不利于复杂算法的开发和实现;可移植性差;容易产生流水
3、线冲突;复杂性高、开发周期长。,三种开发工具的比较,三种开发工具的比较,C 语言程序在执行时,先要调用 C 标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序 main()运行,而汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“start”;由于 CCS 的代码链接器默认支持 C 语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。,什么是线性汇编?线性汇编类似于汇编代码,不同的是线性汇编代 码中不需要给出汇编代码必须指出的所有信息,线性汇编代码对这些信息可以进行一些选择,或 者由汇编优化器确定。下面是不
4、需要给出的信息:使用的寄存器 指令的并行与否 指令的延时周期 指令使用的功能单元,三种开发工具的比较,何时使用线形汇编?1.当程序中需要操作与硬件密切相关的设备,而用C语言较难实现时;2.当需要绕开C编译器的规定,进行特殊操作时。如:C语言规定程序不能访问代码区,当需要进行类似访问时可用限制较小的汇编语言程序设计;3.当需要提高模块的效率(包括空间上和时间上),而C语言程序无法达到要求时。,三种开发工具的比较,1)点积的C语言代码,三种开发工具的比较,2)ASM语言代码,三种开发工具的比较,3)非并行的ASAM代码 4)并行的ASAM代码,三种开发工具的比较,非并行和并行ASAM代码性能比较5
5、)线性汇编代码,三种开发工具的比较,完整的线性汇编代码,三种开发工具的比较,C代码 代码效率低使用Intrinsics的C代码嵌入汇编 容易破坏C环境汇编代码 编程工作量大,三种开发工具的比较,y=a*b,y=_mpy(a,b),asm(“MPY A0,A1,A2”),MPY A0,A1,A2,;a,b,y,开发工具 效率 编程工作量,三种开发工具的比较,软件工具流程,三种开发工具的比较,硬件工具流程,三种开发工具的比较,仅软件,含DSPPCI卡,ISA卡无DSP,指令集概述,指令集概述,操作码映射(.L/.M),指定条件寄存器,是否等于零的测试,源2使用交叉通路,指令域,目的寄存器为A组或B
6、组,并行执行,操作码映射(.D),指令集概述,基址寻址寄存器,寄存器偏移量/5位无符号常量,寻址模式,LDDW位,选择D1或D2,load/store指令域,操作码映射(NOP),指令集概述,并行操作取指包的基本格式取指包:八条32bit指令;执行包:并行执行的所有指令。执行包中的每一条指令使用的功能单元必须各不相同;每条指令的并行执行位(p位)控制本条指令是否与取指包中的其他指令并行执行:p=1 与下条指令并行;p=0 下条指令在当前指令的下个周期执行。,指令集概述,例子:取指包的部分并行p位模式,指令集概述,条件操作,指令集概述,z=1,进行零测试z=0,进行非零测试creg=0,z=0,
7、意味着指令将无条件地执行。,C62xx指令集(根据操作类型分类),指令集概述,C62xx指令集(根据功能单元分类),指令集概述,C62xx指令集(根据执行周期分类),指令集概述,C语言编程初步,建议的程序开发流程,C语言编程初步,C程序,C程序优化,用线性汇编改写关键代码段,C语言编程初步,C的代码产生工具,编译命令,C语言编程初步,编译器选项CL6x-g file1.c file2.asm file.sa file3-s-as-z C程序直接调用汇编器 标准汇编直接调用汇编器 线性汇编调用汇编优化器 无扩展名默认为C文件,-gks,建工程时可直接调用在CCS中进行编译、汇编和链接工具,也可在
8、CCS外用DOS Shell程序直接调用:C16x options files,常用的编译选项,C语言编程初步,连接器选项,C语言编程初步,CL6x-g-s file.c-z link.cmd-o file.out-l rts6201.lib 运行支持库 连接器命令文件-z调用连接器 输出文件名,链接器可用下面语句调用:,C62xx C 数据类型,C语言编程初步,注意:在32位计算机上C语言的long代表Size是32bits,变量声明 对局部变量的访问 在堆栈内分配存储空间;用堆栈首地址作首基地址,用指针*+B15(disp)来访问;堆栈分配在默认段.stack。,C语言编程初步,变量声明全
9、局变量/静态变量两种访问形式,C语言编程初步,1.默认的访问方式Near变量,int n;main().n+=.,2.Far变量,far int n;main().n+=.,编译后的汇编输出和访问方式,编译后的汇编输出和访问方式,.bss _n,4,4ldw.d1*+DP(_n),A0,_n.usect.far,2,2mvk_n,A1mvkh_n,A1ldw.d1*+A1,A0,在.bss内分配地址一条指令访问,在.far内分配地址三条指令访问,变量声明Near变量的生成和使用,C语言编程初步,C语言,汇编语言,LDW.D2*+B15(12),Reg,相对偏移地址,变量声明Near/Far变量
10、-例子,C语言编程初步,声明,C变量名加下划线,编译输出,变量声明总结 局部变量在堆栈段.stack分配地址,用一条指令访问。采用near形式声明全局变量,变量分配在数据段.bss,用一条指令访问。采用far形式声明全局变量,变量分配在数据段.far或 用户自定义数据段,用三条指令访问,应尽量避免采用,C语言编程初步,C优化器经过C优化器的优化,以及其它C语言优化后,C代码效率可达7080用优化选项启动,C语言编程初步,优化器选项,有软件流水功能,C优化器与优化有关的其它编译选项 建议使用-pm与-o3合用,进行程序级优化-mt程序中没有数据aliasing-x2函数内联 不要使用-ml大模式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 ASM 以及 线性 汇编 初步

链接地址:https://www.31ppt.com/p-5426220.html