gpt4 book ai didi

c - AST 或字节码。哪个更容易优化?

转载 作者:太空狗 更新时间:2023-10-29 17:23:25 24 4
gpt4 key购买 nike

所以我正在制作一个小玩具编程语言解释器,我想尝试优化代码,使字节码稍微小一些。我不打算进行非常复杂的优化,例如循环提升,而是进行更简单的优化,例如常量折叠。

我的问题是,是先生成 AST,优化它,然后转换为字节码,还是直接转换为字节码,然后尝试优化它更好?

如果有人有任何示例或知道执行这些方法中的任何一种的编程语言,我们将不胜感激。

提前致谢。

最佳答案

这两种方法都是可行的。例如,tinycc 是一个 C 编译器,最初是 OCCC 的玩具程序。它直接一次性生成可执行代码,没有 AST,但仍然在代码生成器级别执行动态优化。

另一个例子:wren是一种优雅的小型脚本语言,具有不带 AST 的直接字节码生成器。它对字节码执行一些优化,主要是窥孔优化。

更高级的优化在字节码级别是可行的,我目前正在研究一个应该很快发布的好例子,但是构建一个 AST 来执行更高级别的代码分析并生成更好的代码似乎更容易代码。

从理论上讲,字节码和 AST 是同一信息的 2 种表示形式,但一种似乎比另一种更实用。

关于c - AST 或字节码。哪个更容易优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51827565/

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