basic - 大多数 8 位 BASIC 实现是哪种类型的解释器?
问题描述
我是 1980 年代早期/中期个人计算机的忠实粉丝,例如 Amstrad CPC、Commodore 64 和 Sinclair Spectrum。这些计算机都拥有的一件事是 BASIC 版本。
作为一名语言黑客,我很好奇:这些解释器是作为树行者解释器(简单地遍历解析树)还是字节码解释器实现的?我找不到很多关于它们是如何实施的信息。考虑到当时硬件的限制,它们是如何构建的,这让我很着迷。
解决方案
它们大多是基于令牌的。这意味着,集成代码编辑器将源代码中的人类可读命令转换为字节码。在执行时,这些字节码被读取,然后调度程序使用给定的参数执行适当的命令(作为机器代码存储在内核中)。ZX Spectrum 甚至有一个键盘可以输入基本代币:
http://www.worldofspectrum.org/ZX81BasicProgramming/
对于其他一些人,请参见此处:
https://www.primidi.com/atari_basic/description/the_tokenizer
http://fileformats.archiveteam.org/wiki/Commodore_BASIC_tokenized_file
http://cpctech.cpc-live.com/docs/bastech.html
希望这能回答你的问题。
推荐阅读
- c++ - 当序列包含逗号时使用 BOOST_PP_SEQ_FOR_EACH(或替代方法)
- javascript - 当数据是单元格渲染组件Angular 6时如何对列进行排序
- typescript - 方括号在打字稿中用作 Promise 返回类型是什么意思?
- c# - SSIS ForEach 来自变量枚举器,使用 C# 创建的列表 - 变量中的对象不包含枚举器
- mysql - 如何维护通过 SQOOP 下载到 Hive 的 MySQL 表之间的关系
- c++ - Qt - 保持指向存储在 QList 中的内容的指针的最佳方法是什么?
- ios - 集合视图拖放延迟
- basic-authentication - IIS 10 Windows Server 2016 - 基本身份验证随机失败
- jquery - 重置段落的更改
- c++ - 从 .txt 文件中读取学生信息,然后计算平均值并找到字母等级