4

我一直在使用一种简单的基于堆栈的语言,而我发现自己反复做的一件事是手动优化代码块。

我想“嘿,这看起来很像计算机可以做的事情!具有明确目标和语义的重复工作。”。但是环顾四周,我找不到很多关于优化堆栈机器代码的东西。注册机器,是的。但不是基于堆栈的语言。这似乎是对“如何优化堆栈机器代码?”的普遍回应。是“不要”。

那么:如何优化堆栈机器代码?除了简单的窥视孔优化之外,还有什么通用的方法吗?是否有任何自动生成窥视孔优化的方法?

4

1 回答 1

5

1 Wikipedia - Stack Machine列出了一些堆栈机器和基于堆栈的语言(可能以某种方式解决优化问题

1.1我对各种链接的阅读使我得出结论,基于堆栈的机器只是一种理论工具。无需“优化”它们,因为为了运行程序,此类机器将基于堆栈的代码转换为基于寄存器的代码,对其进行优化并在基于寄存器的硬件上运行。此过程通常称为即时编译 (JIT)提前编译 (AOT)

列出的选项中有2个Wikipedia - FORTH描述了超过 40 年的广泛使用的基于堆栈的编程语言(应该有一些与优化相关的材料可用

3谷歌搜索“forth stack machine optimization”给出了很多文章,例如

于 2014-07-07T16:58:23.290 回答