程序员应如何理解编译器

本文介绍了编译器的工作原理,从词法分析提取token,到语法分析构建语法树,再到语义分析确保程序合法性,接着生成中间代码并进行优化,最后转化为机器指令。通过简化示例帮助程序员理解编译器这一普通程序的内部过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

编译器就是一个普通程序,没什么大不了的

提取出每一个单词:词法分析

这些token想表达什么意思:语法分析

语法树是不是合理的:语义分析

根据语法树生成中间代码:代码生成

中间代码优化

代码生成

总结


对于程序员来说编译器是非常熟悉的,每天都在用,但是当你在点击“Run”这个按钮或者执行编译命令时你知道编译器是怎样工作的吗?

这篇文章就为你解答这个问题。

 

编译器就是一个普通程序,没什么大不了的

什么是编译器?

编译器是一个将高级语言翻译为低级语言的程序。

 

首先我们一定要意识到编译器就是一个普通程序,没什么大不了的。

在没有弄明白编译器如何工作之前你可以简单的把编译器当做一个黑盒子,其作用就是输入一个文本文件输出一个二进制文件。

基本上编译器经过了以下几个阶段,等等,这句话教科书上也有,但是我相信很多同学其实并没有真正理解这几个步骤到底在说些什么,为了让你彻底理解这几个步骤,我们用一个简单的例子来讲解。

假定我们有一段程序:

while (y < z) {
  
      int x = a + b;    y += x;}

那么编译器是怎样把这一段程序人类认识的程序转换为CPU认识的二进制机器指令呢?

 

提取出每一个单词:词法分析

首先编译器要把源代码中的每个“单词”提取出来,在编译技术中“单词”被称为token。其实不只是每个单词被称为一个token,除去单词之外的比如左括号、右括号、赋值操作符等都被称为token。

从源代码中提取出token的过程就被称为词法分析,Lex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值