美文网首页
GO 语言编译过程

GO 语言编译过程

作者: wuqke | 来源:发表于2022-02-15 10:50 被阅读0次

记录go是如何编译的

如何编译及运行修改后的源代码

1.下载GO源码
2.进入到go源码的go/src文件夹
3.运行./make.bash
4.设置GOROOT环境变量,指向上面源码的文件夹路径。(为了不影响其他生产项目,建议使用IDE,设置目录自己的GOROOT路径)


GoLand设置GOROOT
运行效果

如何查看编译器编译器把代码源代码变异成汇编语言的过程?

1.命令go build -gcflags -S panictest.go 可以将源代码编译称汇编代码。

  1. 命令GOSSAFUNC=main go build panictest.go 会在目录下生成ssa.html文件。打开可以看看汇编代码优化的每一个步骤。
    汇编代码优化

编译过程

编译核心过程

1.词法分析(编译器前端)
2.语法分析(编译器前端)
3.类型检查(编译器前端)
4.中间代码生成,即SSA(编译器前端)
5.代码优化(编译器前端)
6.机器码生成及优化(编译器后端,在src/cmd/compile/internal 目录中有不同CPU指令集的编译代码)

Go语言的分析器使用LALR(1)的文法来解析词法分析过程输出的Token序列,最有推导加向前查看构成了Go语言分析器的基本原理。
在类型检查期间,编译器会同时将一些节点类型替换成真正的执行函数,如make关键字对应的OMAKE节点,会根据具体的类型换成特定的函数,如OMAKESLICE、OMAKEMAP、OMAKECHAN等。
SSA:staic single assignment,中间代码的生成即是从AST(abstract syntax tree,即抽象语法树)到SSA的转化过程
Go中将汇编语言翻译成机器语言的汇编器是基于Plan 9汇编器的输入类型射击的。

总结

参考资料

相关文章

  • GO 语言编译过程

    记录go是如何编译的 如何编译及运行修改后的源代码 1.下载GO源码2.进入到go源码的go/src文件夹3.运行...

  • Go 语言编译过程概述

    Golang 是一门需要编译才能运行的编程语言,也就说代码在运行之前需要通过编译器生成二进制机器码,随后二进制文件...

  • golang最小docker镜像制作

    因为go语言编译好之后为可执行文件,不需要依赖go语言环境即可运行,所以可以在带go语言的docker镜像中编译,...

  • golang学习(1):go的安装和工作空间

    1 go语言特点:原生支持高并发,带垃圾回收,快速编译静态编译型语言 2 go安装: 2.1go的几种安装方式 2...

  • Golang 的静态编译

    Go语言和C语言的一个很大的区别是,Go语言只静态编译,做个测试: 一方面是Go语言编译后的可执行文件大小比C语言...

  • Go命令

    go env 用于打印Go语言的环境信息。go run 编译并运行源码文件。go build 编...

  • 2 Go安装和常用工具

    一、Go安装 Go定位为系统级别的编程语言,类似C的gcc编译器,Go提供编译器的安装,Go编码完成后通过编译器生...

  • Golang 学习笔记

    golang 简介 静态 强类型 编译型语言 GO语言适用场景及GO语言的优势Go语言是谷歌推出的一种全新的编程...

  • Go语言简介

    一、什么是Go语言? Go是一门开源、并发支持、具有垃圾回收机制、编译性系统编程语言,在静态编译语言的高性能和...

  • Golang的入门教程(一)

    Go语言特性 Go语言是Google公司开发的一种静态的,编译型并自带垃圾回收和并发的变成语言.Go语言的风格类似...

网友评论

      本文标题:GO 语言编译过程

      本文链接:https://www.haomeiwen.com/subject/zlunkrtx.html