gpt4 book ai didi

optimization - 为什么我们使用中间语言而不是AST?

转载 作者:行者123 更新时间:2023-12-03 15:57:43 24 4
gpt4 key购买 nike

中间语言和AST有什么区别?据我所知,它们都提供了流分析信息,编译器可将其用于优化目的。我知道GCC使用两个中间表示形式-AST和IL。这是什么原因呢?

最佳答案

GCC所使用的不仅仅是两个中间表示,而且远远少于应该使用的中间表示。

有一种编译器设计方法,称为“nanopass”:编译器由一系列非常简单的代码重写组成,从解析器生成的原始AST开始,最后是低级代码。每个转换都是微不足道的,相邻中间语言之间的差异很小。

这样,就很容易对每个转换进行推理,易于理解整个链并易于添加新功能。丰富的语言可能有很多语法糖,例如,可以在进行任何类型检查之前以更简单的语言结构来表示。

当然,该链中的每种语言都表示为AST,但通常只有解析器生成的第一个语言才称为“AST”,其他所有语言都称为“中间语言”。当然,不同思想流派的术语可能会有所不同。我个人更喜欢一直使用“AST”一词。

关于optimization - 为什么我们使用中间语言而不是AST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com