golang编译原理初识

本文介绍了Go语言编译器的工作原理,从词法分析、语法分析、类型检查到生成SSA中间代码和机器代码的全过程。重点讨论了Go语言作为静态类型语言的类型检查和使用SSA进行代码优化的特点。
摘要由CSDN通过智能技术生成

关于编译器

编译器本质就是一个翻译器,作用是将一个高级语言翻译成计算机可以识别的机器语言,如今的编译器都是分层架构,分层可以增加各层之间的独立性。golang 编译器分为前端和后端

编译器种类:

  • 本地编译器:可以编译生成所在计算机系统相同平台可执行的目标代码
  • 交叉编译器:可生成在其他平台上可执行的目标代码

golang 编译器主要编译阶段:

1.词法分析 => 2.语法分析 => 3.类型检查 => 4.生成 SSA 中间代码 => 5.生成机器代码

词法分析

golang 通过词法分析器程序将 golang 源代码文件中的字符串序列化成 Token 序列,或者称为标记序列,便于编译器后面的进一步进行语法分析

语法分析

golang 通过语法分析器将刚才生成的标记序列按照 golang 定义好的语法进行整理,构建出最后的抽象语法树 AST

每一个抽象语法树 AST 都对应一个单独的 golang 源码文件。AST 中包含有当前文件所属包名,定义的常量,结构体和函数等信息,方便后续调试

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值