IT资讯
当前位置:集趣网 > IT资讯 >  科技智慧

学习Go语言(GoLang)编译过程预备知识

2020-03-23 18:32:00 木庄网络博客 编辑:玉米 浏览数:48集趣网

想要深入了解 Go语言(GoLang)的编译过程,需要提前了解一下编译过程中涉及的一些术语和专业知识。 这些知识其实在我们的日常工作和学习中比较难用到,但是对于理解编译的过程和原理还是非常重要的。 ...

想要深入了解 Go语言(GoLang)的编译过程,需要提前了解一下编译过程中涉及的一些术语和专业知识。

这些知识其实在我们的日常工作和学习中比较难用到,但是对于理解编译的过程和原理还是非常重要的。

这一小节会简单挑选几个常见并且重要的概念提前进行介绍,减少后面章节的理解压力。

抽象语法树

抽象语法树(AST),是源代码语法的结构的一种抽象表示,它用树状的方式表示编程语言的语法结构。

抽象语法树中的每一个节点都表示源代码中的一个元素,每一颗子树都表示一个语法元素,例如一个 if else 语句,我们可以从 2 * 3 + 7 这一表达式中解析出下图所示的抽象语法树。

简单表达式的抽象语法树

作为编译器常用的数据结构,抽象语法树抹去了源代码中不重要的一些字符 - 空格、分号或者括号等等。

编译器在执行完语法分析之后会输出一个抽象语法树,这个抽象语法树会辅助编译器进行语义分析,我们可以用它来确定语法正确的程序是否存在一些类型不匹配或不一致的问题。

静态单赋值

静态单赋值(Static Single Assigment, SSA)是中间代码的一个特性,如果一个中间代码具有静态单赋值的特性,那么每个变量就只会被赋值一次。

在实践中我们通常会用添加下标的方式实现每个变量只能被赋值一次的特性,这里以下面的代码举个例子:

x := 1
x := 2
y := x

根据分析,我们其实能够发现上述的代码其实并不需要第一个将 1 赋值给 x 的表达式,也就是 x := 1 这一表达式在上述的代码片段中是没有作用的。

x1 := 1
x2 := 2
y1 := x2

当我们使用具有 SSA 特性的中间代码时,就可以非常清晰地发现变量 y1 的值和 x1 是完全没有任何关系的,所以在机器码生成时其实就可以省略第一步,这样就能减少需要执行的指令来优化这一段代码。

在中间代码中使用 SSA 的特性能够为整个程序实现以下的优化:

1.常数传播(constant propagation)

2.值域传播(value range propagation)

分享到:

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:http://www.zjzgh.net/news/2020/03/23/92341928.html

转载本站原创文章请注明来源:集趣网

行业聚焦

复工不顺,富士康加大力度激励员工返岗

本月12日,据外媒报道,富士康计划在2月底前恢复其在中国大陆50%的生产,并计划3月份恢复其在中国大陆80%的生产。而提及富士康各工厂的实际复工情况,富士康方面...[详细]

"using"指令应该在名称空间之内还是之外?

我已经在某些C#代码上运行了StyleCop,并且一直在报告我的using指令应该在名称空间中。是否有技术上的理由将using指令放在名称空间的内部而不是外部?...[详细]

我国固定宽带迈入千兆时代,4G用户占比超八成

2月28日消息,昨天工信部发布2019年通信业统计公报,公报提到:截至12月底,三家基础电信企业的固定互联网宽带接入用户总数达4.49亿户,全年净增4190万户...[详细]

售价3998元!iQOO 3拉力橙22日全款预售 3月29日首销

iQOO 推出了号称“重新定义5G性能旗舰”的iQOO 3新机,该机搭载了骁龙865移动平台,提供有驭影黑、流光银和拉力橙三种高颜值配色。值得注意的是...[详细]

三星折叠屏手机Galaxy Z Flip不会重蹈覆辙的五个原因

据国外媒体Mashable分析,三星Galaxy Z Flip将会比上一款折叠屏手机Galaxy Fold更成功,不再会重蹈去年折叠屏手机的质量问题及叫好不叫座...[详细]

科技趋势

更多

3598元至4398元,iQOO 3正式发布:搭载高通骁龙865,支持55W超快闪充

 

IT之家2月25日消息 今日下午,iQOO 3手机正式发布,搭载高通骁龙865处理器,采用全新 iQOO UI...[详细]

苹果3月31日将举办特别活动 iPhone 9或将面世

 

据外媒报道,目前有大量信息均指向苹果正在筹划举行一场春季媒体活动,而据德国网站的报道显示,苹果计划在3月底举行特别活动。...[详细]

1.46亿条数据:英国多个火车站免费Wi

 

IT之家3月3日消息 据外媒报道,目前大约有10,000人由于使用了英国火车站免费Wi-Fi导致其电子邮件地址...[详细]

发布在即:新款谷歌Pixel Buds已通过NCC认证

 

IT之家3月20日消息 Google于去年发布了Pixel Buds,但它们只能通过电缆充电。即将发布的新版本...[详细]

石头扫地机器人P5开箱图赏:高品质生活的首选

 

智能扫地机器人已经从数年前的功能单一、智能性差发展到了如今的功能多样、清洁性能极好。拥有一台智能的扫地机器人,家居清洁就...[详细]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 一周排行每月关注
  • 013598元至4398元,iQOO 3正式发布:搭载高通骁龙865,支持55W超快闪充
  • 02夏普在美国对彩虹光电等公司提起损害专利诉讼
  • 03微软全新Android版Office App上手体验
  • 04C# 如何一次捕获多个异常?
  • 05京喜推"直播小店",预计今年将开展超1000场溯源直播
  • 06APP时代,一个好的域名还重要吗?
  • 07超雪团队公布更多用于有锁机iPhone的ICCID解锁码
  • 08Windows 10 Manager v3.2.4.0 正式绿色版
  • 09Win10新预览版19577开始推送:新图标+多项新功能
  • 10spring、springMvc、springBoot和springCloud的区别