网站大量收购闲置独家精品文档,联系QQ:2885784924

八、嵌入式程序设计与分析详解.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式软件的要求 功能性要求:满足系统所要求的功能。 时限性要求:满足系统的实时性要求。 存储器要求:适应系统内存总量要求。 功耗要求:满足系统能耗的要求。 嵌入式编程 语言的选择 高级语言:C、C++、JAVA、Ada等。 汇编语言:硬件体系结构相关。 程序的编译执行过程 嵌入式C编译环境 嵌入式C交叉编译环境一般都包括汇编器、链接器和定位器。 汇编器的任务是将符号级的汇编语言翻译成称为目标代码的指令位级表示。 链接器是用来将不同的模块(编译或汇编过的文件)链接成目标文件。 定位器则允许将代码和数据放置在目标处理器的指定内存空间。 汇编程序 汇编完成汇编语言到二进制代码的转换。 标记处理方法: 第一次扫描代码以决定每个标记的地址。 第二次用第一次中的标记值汇编指令,产生二进制代码。 符号表 ADD r0,r1,r2 Label1 ADD r3,r4,r5 CMP r0,r3 Label2 SUB r5,r6,r7 assembly code Label1 0x8 Label2 0x10 symbol table 编译过程 ARM开发环境包含的C/C++编译器 编译=翻译+优化 编译结合了翻译和优化两个环节 翻译是将高级语言翻译为低级指令形式(或汇编语言形式)。 优化一方面产生更好的指令顺序,另一方面从整体上考虑程序效率。 编译过程中,高级语言被拆分成语句和表达式。 编译技术——语句翻译 a*b + 5*(c-d) 算术表达式的代码翻译 ADR r4,a MOV r1,[r4] ADR r4,b MOV r2,[r4] MUL r3,r1,r2 控制代码的产生 if (a+b 0) x = 5; else x = 7; 控制代码的翻译 ADR r5,a LDR r1,[r5] ADR r5,b LDR r2,b ADD r3,r1,r2 BLE label3 过程链接 过程一般指不返回值的结构。 要求代码: 调用并返回。 传递参数和结果。 参数和结果是在堆栈中传递的。 带有几个参数的过程可以使用寄存器。 过程堆栈 编译技术——ARM过程调用标准(APCS) APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自 C、 Pascal,也可以是用汇编语言写成的。 APCS 定义了: r0-r3 pass parameters into procedure. Extra parameters are put on stack frame. r0 holds return value. r4-r7 hold register values. r11 is frame pointer, r13 is stack pointer. 编译技术——数据结构 编译程序必须对相关数据结构的引用翻译成对原始存储器的引用,通常需要在运行时进行地址计算。 一维数组 二维数组 结构体 编译技术——表达式简化 1.A*B+A*C?A*(B+C) 2.for(i=0;i8+1;i++) ? for(i=0;i9;i++) 编译技术——死代码清除 死代码是指永远不会被执行的代码,在编译时要能够识别这些代码,并将其从程序中清除掉。 死代码大都是一些调试信息。 编译技术——循环变换 循环是重要的程序结构,经常占用大量的CPU的计算时间,在编程时需要优化; 循环展开: 循环合并: 循环折叠: 编译技术——寄存器分配 寄存器分配选择寄存器变量的分配以使所需的寄存器总数最少; 程序优化 Optimizing for execution time. Optimizing for energy/power. Optimizing for program size. 影响程序运行时间的主要因素 源代码:编写高效优化的高级语言源代码可以缩短程序运行的时间。 编译器:编译器负责把高级语言代码转换成机器代码程序,不同的编译器会导致代码效率的不同。 硬件的体系结构:硬件的体系结构对程序的运行时间有较大的影响,如CPU内部寄存器的数量、高速缓存的大小和组织、系统的内存大小等。 操作系统:操作系统决定了任务调度与内存管理等对程序执行时间有重要影响,结合硬件的体系结构,决定了系统的中断响应时间。 程序优化的基本策略 1.高级程序设计:选择适当的算法与数据结构,避免使用可能会渐进产生较差性能的算法与编码技术。 2.基本编码原则:避免采用限制编译器优化的因素,从而令编译器产生高

文档评论(0)

118118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档