How Compiler Works?
来源:互联网 发布:淘宝爱宠乐园 编辑:程序博客网 时间:2024/05/20 15:39
转载地址:http://www.programcreek.com/2011/02/how-compiler-works/
简单讲解了编译器的工作原理。
How compiler works is not easy to explain in one sentence. The best way is to use an example.
A compiler is a computer program that transforms source code written in a high-level programming language into a lower level language.
Basically, a compiler consists the following phases: Lexical Analysis, Syntax Analysis, Semantic Analysis, IR Generation, IR Optimization, Code Generation, Optimization.
Given a sample program:
The following shows the output of each phase.
1. Lexical Analysis
Convert a program into sequence of of tokens.
2. Syntax Analysis
Recover the structure described by using series of tokens from previous scanner.
3. Semantic Analysis
Ensures program has a well-defined meaning.
4. IR Generation
5. IR Optimization
6. Code Generation
7. Optimization
I was thinking to draw a diagram which can clearly show how a compiler works. However, I found the diagram in the dragon book is very good, no more diagram work is necessary anymore.
I still want to make a small compiler which compiles a simple one function from start to end. Will do some research and possibly figure out a good solution for clear demonstration.
References:
1. Standford Compiler Lecture
2. Dragon Book
- How Compiler Works?
- How compiler works
- 【编译原理】How Compiler Works?
- How the web-tier compiler works
- How Internet EDI Works
- How E-mail Works
- How E-mail Works
- How Google Works
- How DES works
- How Google Works
- How Google Map Works
- How NAT Works
- How 4GT Works
- How PAE X86 Works
- How Digital Photography Works
- How Tomcat Works 1
- How Tomcat Works 2
- Books - How Tomcat works
- C/C++ 程序设计员应聘常见面试笔试试题深入剖析
- IE6判断
- 图片滑动效果
- 编码20年的老程序员分享所积累的20条编程经验
- DB2中表字段大小修改
- How Compiler Works?
- 基于fpga的超声波测距(二)
- jQuery.get方法请求JSON数据,解析JSON数据 注意事项
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
- oracle存储过程
- 事务处理
- Oracle Package包 (不积跬步,无以至千里)
- CentOS .bash_profile
- goagent访问非谷歌网址出现403错误