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

Optimization 如何优化简单的堆栈机器代码?,optimization,language-agnostic,stack-machine,Optimization,Language Agnostic,Stack Machine,我一直在使用一种简单的基于堆栈的语言,我发现自己反复做的一件事就是手动优化代码块 我想“嘿,这看起来很像电脑能做的事情!有明确目标和语义的重复性工作。”。但是环顾四周,我找不到太多关于优化堆栈机器代码的内容。登记机器,是的。但不是基于堆栈的语言。对于“如何优化堆栈机器代码?”的一般回答似乎是“不要” 那么:如何优化堆栈机器代码呢?除了简单的窥视孔优化之外,还有什么通用的方法吗?是否有自动生成窥视孔优化的方法?1列出了一些堆栈机器和基于堆栈的语言(可能以某种方式解决优化问题) 1.1通过阅读各种链

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

我想“嘿,这看起来很像电脑能做的事情!有明确目标和语义的重复性工作。”。但是环顾四周,我找不到太多关于优化堆栈机器代码的内容。登记机器,是的。但不是基于堆栈的语言。对于“如何优化堆栈机器代码?”的一般回答似乎是“不要”

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

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


1.1通过阅读各种链接,我得出结论,基于堆栈的机器只是一种理论工具。无需“优化”它们,因为为了运行程序,这些机器将基于堆栈的代码转换为基于寄存器的代码,对其进行优化并在基于寄存器的硬件上运行。这个过程通常称为或

2在列出的选项中,描述了超过40年历史的基于广泛堆栈的编程语言(应该有一些与优化相关的材料可用)

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

  • 第四个CPU
  • 优化堆栈代码生成的初步探索
  • 堆栈优化-Peter J.Knaggs博士
  • 设计和实现一个高效的堆栈机

为使您的问题具有可回答性,不要过于宽泛和主题化-请在优化之前添加RoboWar代码示例,并在手动优化之后添加相同的代码()。例如,整体也是基于堆栈的。用于台式机、服务器、安卓系统等。思考了一会儿后,我意识到了一些事情。RoboWar只是一个上下文——我对堆栈机器优化技术感兴趣,而不是专门针对RoboWar。我已经完全删除了对RoboWar的讨论,以免人们产生错误的想法。虽然我试图给你一些答案,但我投了-1票,因为这个问题太广泛,没有显示任何代码,很少显示研究成果,也不适合网站格式。如果你想要一个无代码的问题,你应该把它移到“我对各种链接的阅读让我得出结论,基于堆栈的机器只是一个理论工具。”Brainfuck也是,但仍然有优化器。然而,这些链接很有帮助。你称堆栈机器为理论工具,然后您引用了J1 CPU,它是一个实际的硬件堆栈机器,它不会将基于堆栈的代码转换为基于寄存器的代码,而是作为真正的基于堆栈的代码运行。