首页 > 解决方案 > 基于堆栈的语言:寄存器的优缺点?

问题描述

我目前正在为代码高尔夫(International Phonetic Esoteric Language/IPEL)设计一种基于堆栈的深奥编程语言,在其当前规范中,它具有一组用户可以修改的值。

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

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

标签: language-agnosticcpu-registerslanguage-designstack-based

解决方案


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

您的单个寄存器听起来会搞砸。

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


推荐阅读