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

嵌入式c看程序的编译与调试.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式c看程序的编译与调试

3.1.1 C语言编译器 C语言是在70年代初问世的。一九七八年由美国电话电报公司(ATT)贝尔实验室正式发表了C语言。 早期的C语言主要是用于UNIX系统 目前最流行的C语言编译器有以下几种: GNU Compiler Collection 或称 GCC Microsoft C 或称 MS C Borland Turbo C 或称 Turbo C 3.1.3 Makefile makefile是用于自动编译和链接的 makefile能够纪录文件的信息,决定在链接的时候需要重新编译哪些文件 C语言编译器 C语言编译过程 Makefile 3.1.2 C语言编译过程 编译:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 C源程序头文件--预编译处理(cpp)--编译程序本身--优化程序--汇编程序--链接程序--可执行文件 预处理 编译阶段 优化阶段 汇编过程 连接程序 3.1.2.1 编译预处理 预处理:读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。 伪指令主要包括以下四个方面: 宏定义指令 如 #define Name #undef 条件编译指令 如#ifdef,#ifndef,#else,#elif,#endif, 头文件包含指令 如#include FileName或者#include FileName等 特殊符号 如 LINE FILE 预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。 这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。 3.1.2.2 编译阶段 预编译程序所要作得工作: 词法分析 语法分析, 翻译成等价的中间代码表示或汇编代码。 3.1.2.3 优化阶段 优化处理是编译系统中一项比较艰深的技术。它涉及到的问题不仅同编译技术本身有关,而且同机器的硬件环境也有很大的关系 中间代码的优化 不依赖于具体的计算机 主要的工作是删除公共表达式、循环优化(代码外提、强度削弱、变换循环控制条件、已知量的合并等)、复写传播,以及无用赋值的删除, 目标代码的生成优化 依赖于具体的计算机 充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数 对指令进行一些调整使目标代码比较短,执行的效率比较高 经过优化得到的汇编代码必须经过汇编程序的汇编转换成相应的机器指令,方可能被机器执行 3.1.2.4 汇编阶段 汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程 目标文件中所存放的也就是与源程序等效的目标的机器语言代码。 目标文件由段组成 代码段  该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。 数据段  主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。 3.1.2.4 汇编阶段 UNIX环境下主要有三种类型的目标文件: 可重定位文件  其中包含有适合于其它目标文件链接来创建一个可执行的或者共享的目标文件的代码和数据。 共享的目标文件  这种文件存放了适合于在两种上下文里链接的代码和数据。第一种事链接程序可把它与其它可重定位文件及共享的目标文件一起处理来创建另一个目标文件;第二种是动态链接程序将它与另一个可执行文件及其它的共享目标文件结合到一起,创建一个进程映象。 可执行文件   它包含了一个可以被操作系统创建一个进程来执行之的文件。 汇编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其他的一些处理方能得到,这个就是链接程序的工作了。 3.1.2.5 链接阶段 链接程序是将有关的目标文件彼此相连接,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。目标文件由段组成 链接处理可分为两种 : 静态链接 动态链接 3.2 嵌入式C程序的编译过程 创建过程 编译 链接 定址 3.2.1 创建过程 源代码转换为可执行的二进制映像的过程 源文件都被编译或汇编到一个目标文件(object file) 可重定位程序(relocatable program) 重定址(relocation)的过程 3.2.2 编译 编译器的工作主要是把用人可读的语言所书写的程序,翻译为特定的处理器上等效的一系列操作码。 3.2.3 链接 创建过程 编译 链接 定址 3.2.4 定址 创建过程 编译 链接 定址 3.3 程序运行 A.out及其传说 段 操作

文档评论(0)

150****4233 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档