编译器过程概述

Lexical Analysis(词法分析)

  • 词法分析的目的是将程序文本划分为单词,或者我们在编译器中所说的,标记
  • 利用程序文本中的空格,分号等符号来识别程序文本

Parsing(解析)

  • 解析的实际工作是将单词组合到别的更高级别的结构中
  • eg
    if x==y then z=1;else z=2;	
    
    利用词法分析出 if,else ,== ,x==y是条件,z是变量等标记 ,将标记放入 if-then-else 解析树种

Semantic Analysis(语义分析)

  • 编译器词义分析非常有限,并且编译器也不知道程序是做什么的
  • 变量绑定等操作

Optimization(优化)

  • 通过修改程序,使得程序使用的资源更少,执行的时间更少
  • eg “我吃了许许多多的草莓”改成 ”我吃了许多草莓“
    x=y*0 改为 x=0(只在x,y整数下有小,浮点数下是错误的)

Code Generation(代码生成)

  • 将结构树翻译成汇编等机器代码

编译过程的变迁

  • 早期在 词法分析,解析,优化和代码生成中占据编译器大量时间,随着技术改进,目前时间主要花费在语义分析和优化的过程中
  • 编译过程时间消耗占比,上是以前,下是现在编译过程时间消耗占比
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值