编译器概述-结构和主要组件

并不是说所有的编译器优化都能保证提高代码速度 只能说优化是有可能提高代码速度 例如上面那个优化就会使得代码在cpu中运行的负担加重 因为t其实只是维护了两个变量的相加 但却要多占用一个寄存器的位置 到不如直接算两遍a+b了 如果t中维护了很多变量 显然这个优化是有用的 所以编译器中的优化无疑不是绝对意义上的智能优化。虽然说看上去优化的这个过程和cpu内部设计是无关的 但是其实这也不是绝对的 寄存器的数量 cpu内部的设计逻辑其实也会影响到优化设计的过程。看一个例子 x = a*b + c*d;...
摘要由CSDN通过智能技术生成

scanning:就是把输入分成一个个Token 可以理解成对各个单词的分析
parsing: 也叫句法分析 对于整个句子进行分析
semantic analysis:检查生成的句子是否有意义,有时候一句话语法正确但是没有意义 例如苹果吃了一个汽车

一个程序只有拥有了表达式 条件判断 循环等关键特质才能有意义 进而转换成汇编语言

例如像变量a这种叫做symbolic information(符号信息) 在最终转化而成的汇编语言中 是不存在符号信息的 所有的变量其实是内存地址

在最终的Abstract syntax tree形成后 其实是没有保留symbolic information的
而保留symbolic information唯一作用就是debug

scanner:

 paring:

semantic:

student a;

car b;

int x = a + b; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值