IT资讯
当前位置:集趣网 > IT资讯 >  活动互动

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

2020-03-25 20:10:24 木庄网络博客 编辑:玉米 浏览数:49集趣网

想要深入了解 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/25/92341995.html

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

行业聚焦

携程回应“轮岗轮休、上三休二”:正征询意见,非强制

IT之家3月12日消息 针对网上“携程安排员工上三休二轮休上班”的传言,携程方面表示,确实部分业务目前处于停滞状态。携程称,对于业务量减少严重的部门来...[详细]

美股两周三熔断,不忍心算科技巨头又蒸发多少市值

年纪轻轻的我们,见证了历史。没错,美股又又(这次绝对没用错词)熔断了,其实我们对上一次的熔断印象很深刻,感觉仿佛就只过去了几天:美股历史上一共四次熔断,第一次熔...[详细]

小米常程苏宁直播带货:小米10遭疯抢,6成米粉选择24期免息

持续发力的苏宁全民营销,又迎来了一位“重量级选手”。3月5日下午,小米副总裁常程在苏宁直播首秀带货,限时开抢稀缺爆款小米10新机,手机上线即遭疯抢,其中60%的...[详细]

大众高管:特斯拉电动汽车技术领先竞争对手十年

据外媒报道称,众负责电动汽车业务的董事会成员托马斯·乌布里奇近日表示,美国电动汽车制造商特斯拉在制造电动汽车和开发软件方面领先竞争对手10年。乌布里奇指出:“特...[详细]

三星Galaxy S20系列续航测试:120Hz和60Hz到底相差多少

IT之家3月14日消息 Galaxy S20系列的120Hz刷新率对电池续航有什么影响?近日,外媒phonearena就针对Galaxy S20的三款...[详细]

科技趋势

更多

马云在其微博宣布 向伊朗捐助100万只口罩

 

继向日本捐助100万只口罩后,今天马云在其微博宣布,再向伊朗捐助100万只口罩。马云微博称:“万里尚为邻,相扶无远近。最...[详细]

微软不做自己动手!教你换上Win10彩色磁贴

 

Win10的磁贴一直使用主题色,这就导致了一个问题,画面太素了。于是在很多民间Win10概念设计作品中,我们看到了为数不...[详细]

苏宁315启动150个大牌直播日 全民焕新节万券齐发

 

继2月24日举办了一场8分钟超短发布会后,临近315,苏宁又在行业内发起一场堪称“史上最长”的发布会——全民焕新节万券齐...[详细]

小米10/Pro NFC 最多支持绑定 14 张卡,智能选卡开发中

 

IT之家2月26日消息 2月13日,雷军正式面向公众发布了小米10、小米10 Pro手机。小米10 Pro手机...[详细]

联想推出34英寸带鱼屏显示器:3440×1440p,144Hz刷新率

 

IT之家2月12日消息 联想现已上架G34w-10显示器,34英寸WQHD曲面屏,144Hz刷新率,售价为3299元。据...[详细]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 一周排行每月关注
  • 01小米10 Pro将于3月5日前OTA升级DXOMark相机测试固件
  • 02鲁大师 v5.1020.1160 去广告绿色版
  • 03科技与时尚的弄潮儿,乐虎国际维一官网Eyewear智能眼镜2020春夏新款亮相全球
  • 04QQ看点:新时代的“大”看点
  • 05腾讯QQ安卓版8.3.0更新:新增群课堂回放、习题库自动批改
  • 06腾讯 QQ iOS 版 8.2.8 正式更新:新增面对面加好友,全新语音表情
  • 07蔡依林晒出三星折叠屏手机Galaxy Z Flip:单手可握
  • 0812期免息,小米10手机明日上午10点再次开售
  • 09实测石头扫地机器人T7:扫拖一体双倍洁净 轻松解放双手
  • 10微软商城五折大促:认证翻新Surface Book 1T顶配版7889元