我一直在使用一种简单的基于堆栈的语言,而我发现自己反复做的一件事是手动优化代码块。
我想“嘿,这看起来很像计算机可以做的事情!具有明确目标和语义的重复工作。”。但是环顾四周,我找不到很多关于优化堆栈机器代码的东西。注册机器,是的。但不是基于堆栈的语言。这似乎是对“如何优化堆栈机器代码?”的普遍回应。是“不要”。
那么:如何优化堆栈机器代码?除了简单的窥视孔优化之外,还有什么通用的方法吗?是否有任何自动生成窥视孔优化的方法?
最佳答案
1 Wikipedia - Stack Machine列出了一些堆栈机器和基于堆栈的语言(可能以某种方式解决优化问题)
1.1 我对各种链接的阅读使我得出结论,基于堆栈的机器只是一种理论工具。无需“优化”它们,因为为了运行程序,此类机器将基于堆栈的代码转换为基于寄存器的代码,对其进行优化并在基于寄存器的硬件上运行。此过程通常称为 Just In Time compilation (JIT)或 Ahead Of Time compilation (AOT)
2 在列出的选项中Wikipedia - FORTH描述了超过 40 年的广泛使用的基于堆栈的编程语言(应该有一些与优化相关的 Material 可用)
3 谷歌搜索“forth stack machine optimization”会给出很多文章,例如
关于optimization - 如何优化简单的堆栈机器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599876/