为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第4天 深入Go底层原理,重写Redis中间件实战 第3章

标签:
Go

课程名称:深入Go底层原理,重写Redis中间件实战

课程章节:Go程序是如何编译的

主讲老师:Moody

课程内容:

今天学习的内容包括:

查看代码编译过程

Go语言的编译流程

课程收获:

查看代码编译过程

go build -n main.go # 只输出编译过程,而不实际编译

Go语言的编译流程

  • 词法分析
    • 将代码翻译成Token(Token的最小语义结构)
    • 比如:“package main” 拆分为 “package” 和 “main”
    • 比如:“import “fmt”” 拆分为 “import”、“"”、“fmt”、“"”
  • 句法分析
    • 把Token变成一棵语法树(也叫作抽象语法树AST)
  • 语义分析
    • 类型检查
    • 类型推断
    • 函数内联的优化
    • 逃逸分析(即Go的变量该放在栈上还是放在堆上)
  • 中间码生成
    • 生成与平台无关的汇编代码(SSA)
    • 设置 $env:GOSSAFUNC=“main”(Windows平台的环境变量来查看main函数生成SSA的过程)
    • 然后 go build main.go 得到 ssa.html 即可查看对应SSA的编译过程
  • 代码优化
  • 机器码生成
    • go build -gcflags -S main.go 查看生成的Plan9格式的汇编代码

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
1
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消