1 / 5
文档名称:

编译器-详解.docx

格式:docx   大小:88KB   页数:5页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译器-详解.docx

上传人:科技星球 2022/4/4 文件大小:88 KB

下载得到文件列表

编译器-详解.docx

相关文档

文档介绍

文档介绍:编译器-详解
 
   
 
 
 
 
 
 
 
     
 
 
 
 
 
编译器(Compiler)
目录
1 什么是编译器
2 编译器的分类[1]
3 参考文献
什么是编译器
   
 
   
编译器-详解
 
   
 
 
 
 
 
 
 
     
 
 
 
 
 
编译器(Compiler)
目录
1 什么是编译器
2 编译器的分类[1]
3 参考文献
什么是编译器
  编译器是指从高级语言到低级语言的翻译器,同样的技术可用于不同种类语言之间的翻译。编译器是一种电脑程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。
  它主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高阶语言 (High-level language), 如 Pascal、C、C++、C# 、Java 等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
  一个现代编译器的主要工作流程如下: 源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行文件 (executables)
编译器的分类[1]
  典型的编译器输出是由包含人口点的名字和地址以及外部调用的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必须采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
  在运行过程中,编译器又可分成只依赖于源语言的编译器前端和只依赖于目标语言的编译器后端两大部分,编译器前后端结构如图所示。
  
  前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的“单词”(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式、语句、函数等。例如“a=b+c”,前端词法分析器看到的是“'a'='b'+'c'”,语法分析器按定义的语法,先把它们组装成表达式“b+C”,再组装成“a=b+c”的语句。前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树AST(Abstract Syntax Tree),这样后端可以在此基础上进一步优化处理。编译器后端主要负责分析、优化中间代码以及生成机器代码。一般来说所有的编译器分析、优化、变型都可以分成两大类:函数内进行和函数间进行。很明显,函数间的分析优化更准确,但需要更长的时间来完成。
  一般编译器可以分为以下两类:
  ①“本地”编译器:编译器可以生成用来在与编译器本身所在的计算机和操作系