language-agnostic - 基于堆栈的语言:寄存器的优缺点?
问题描述
我目前正在为代码高尔夫(International Phonetic Esoteric Language/IPEL)设计一种基于堆栈的深奥编程语言,在其当前规范中,它具有一组用户可以修改的值。
然而,在尝试了一些简单的挑战(并且来自更多的程序和 OOP 背景)之后,我一直在考虑添加一个寄存器及其相关指令(堆栈→注册、注册→堆栈等)供用户使用。(这是在版本 -1 语言规范中,但我决定取消它以支持纯堆栈操作。)
在基于堆栈的语言中使用用户可修改的寄存器有什么优点和缺点?
解决方案
在我看来,基于堆栈的语言的主要好处是您不必担心子程序中可能使用哪些寄存器,因此您不必进行任何保存/恢复或寄存器分配。
您的单个寄存器听起来会搞砸。
您可能已经有一个调用/执行堆栈、一个值/参数堆栈和一个符号表。如果这些真的不行,那么添加另一个值堆栈可能比添加寄存器更有用。不过,您已经拥有的两个堆栈和符号表应该已经足够了。
推荐阅读
- python - Python:考虑一个列表,该列表仅包含两个可能值的多次出现。如何将一个值全部“推/压缩”到左侧
- python - 在python中解析yaml,上层没有明确的名字
- java - 使用 Spring Boot 在一个 get 请求中从多个数据库加载分布式数据
- kotlin - Kotlin Flow onBackpressureDrop RxJava2 模拟
- python - Python-VISSIM COM 接口
- google-analytics - 如何在 Google 分析中按来源获取目标完成位置?
- c++ - 如何确定 std::strtof 是成功还是失败?
- android - 序列化 - 模型类的数据未传递给另一个活动
- php - Drupal: Gateway Timeout 网关没有收到来自上游服务器或应用程序的及时响应
- arrays - 尝试在 Roblox Studio 上调用表值错误