如何优化简单的堆栈机器代码?

TLW*_*TLW 4 language-agnostic optimization stack-machine

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

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

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

xmo*_*jmr 5

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

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

维基百科列出的选项中的2- FORTH描述了 > 40 年历史广泛的基于堆栈的编程语言(应该有一些与优化相关的材料可用

3谷歌搜索“第四栈机器优化”给出了很多文章,例如