Language agnostic 基于堆栈的语言:寄存器的优缺点?

Language agnostic 基于堆栈的语言:寄存器的优缺点?,language-agnostic,cpu-registers,language-design,stack-based,Language Agnostic,Cpu Registers,Language Design,Stack Based,我目前正在为代码golf()设计一种深奥的基于堆栈的编程语言,在其当前规范中,它有一个用户可以修改的值堆栈 然而,在尝试了一些简单的挑战(并且来自更程序化和面向对象的背景)之后,我一直在考虑添加一个寄存器及其相关指令(堆栈)→ 雷格,雷格→ 堆栈等)供用户使用。(这是在版本1语言规范中,但我决定取消它,以支持纯堆栈操作。) 在基于堆栈的语言中使用用户可修改寄存器的优缺点是什么?在我看来,基于堆栈的语言的主要好处是,您不必担心子例程中可能使用哪些寄存器,因此不必进行任何保存/恢复或寄存器分配 你的

我目前正在为代码golf()设计一种深奥的基于堆栈的编程语言,在其当前规范中,它有一个用户可以修改的值堆栈

然而,在尝试了一些简单的挑战(并且来自更程序化和面向对象的背景)之后,我一直在考虑添加一个寄存器及其相关指令(堆栈)→ 雷格,雷格→ 堆栈等)供用户使用。(这是在版本1语言规范中,但我决定取消它,以支持纯堆栈操作。)


在基于堆栈的语言中使用用户可修改寄存器的优缺点是什么?

在我看来,基于堆栈的语言的主要好处是,您不必担心子例程中可能使用哪些寄存器,因此不必进行任何保存/恢复或寄存器分配

你的单个寄存器听起来会把事情搞砸


您可能已经有了一个调用/执行堆栈、一个值/参数堆栈和一个符号表。如果这些真的不行,那么添加另一个值堆栈可能比添加寄存器更有用。不过,您已经拥有的两个堆栈和符号表应该足够了。

在旧的基于Burroughs堆栈的大型机上,寄存器位于堆栈的顶部。堆栈上接下来的几个位置是寄存器2、3、4,最多是寄存器总数。然后是快速内存,最后是慢速内存。这是一个非常古老的设计;机器使用的是Algol-60!