编译器学习笔记之一:概述(未完)
来源:互联网 发布:手机淘宝详情页不显示 编辑:程序博客网 时间:2024/05/16 19:20
编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
源代码(sourcecode)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标代码(objectcode)→连接器(Linker)→可执行程序(executables)
编译器可以生成与编译器本身所在的计算机和操作系统相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成其它平台上运行的目标代码,这种编译器又叫做交叉编译器
预处理器:预处理器(preprocessor)作用是通过代入预定义等程序段将源程序补充完整。
编译器前端:编译器前端(frontend),前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。 例如“a = b + c;”前端词法分析器看到的是“a = b ; + c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。 前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在此基础上进一步优化,处理。
编译器后端:编译器后端(backend)编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。
- 编译器学习笔记之一:概述(未完)
- 模式识别学习笔记一:概述(未完待续)
- 《真言》学习笔记(未完)
- mysql学习笔记(未完)
- linux学习笔记(未完)
- (未完)string 学习笔记
- eleasticsearch学习笔记(未完)
- scala学习笔记(未完)
- SpringMVC学习笔记(未完)
- docker 学习笔记(未完)
- [VSTO学习笔记之一]VSTO概述
- ruby学习笔记之一:ruby概述
- TCP/IP学习笔记之一 --- 概述
- 加密算法学习笔记之一__加密算法概述
- html5与css3学习笔记之一:概述
- 现代OpenGL+Qt学习笔记之一:概述
- Ajax学习笔记总结(未完待续)
- 开发文本编辑器学习笔记(未完)
- session的生命周期管理
- 结贴)2012.3-2014.3考完16门笔试,6门实践
- HsqlDB源码学习——基本框架概览
- ios app推送通知详细教程二
- Java项目经验——程序员成长的关键
- 编译器学习笔记之一:概述(未完)
- 精图规范1.0----11 绘制:填充、描边和标记符号 Painting: Filling, Stroking and Marker Symbols
- Windows编程 - 启动可执行(exe)程序 代码(C++)
- know your scrnsize!
- KMP算法(简单的说)
- 精图规范1.0----12 颜色 Color
- NSNotificationCenter消息通信机制介绍(KVO)
- 高效程序员的特征:聪明,懒惰
- 想让你陪我到天荒地老