`
yangdong
  • 浏览: 66529 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

完全由不变体写出来的 Register Machine Simulator

 
阅读更多
SICP 第二版 5.2 节提到的 Register Machine Simulator 我用 Clojure 重写了一遍,完全不用 mutable states。每执行一条指令都可以打出当时机器的状态,甚至可以把这些状态保存起来。这就是 Clojure 牛逼的地方……

程序里的模型跟书上不太一样,为了方便对时间的管理(也就是为了用不变体搞定原本需要可变体搞定的事)。Machine 只包含寄存器和栈。操作集和解析过的指令都不作为 Machine 的一部分。因为它们在程序运行过程中是不会变的。

比较有意思的是指令的初始化过程。原本书的指令(instructions/controller)是可变体。先扫一圈,把 label 扫出来,然后后续在往以 label 为 key 的 map 里面塞解析过的指令。这招在用不变体建模的时候就不管用了。因为要解析指令,完整的 labels 列表就是必须的。而给定一个 label 又必须能找到它所对应的指令才算有意义。所以这里出现了一个循环依赖。我就在这两者之间加了一个程序计算器(index/program counter)。原本书中的 pc register 里面放的是一串指令列表,我这里面回归本源,又放的是整数了。

这个模拟器运行书中 5.2 节计算最大公约数和 Fabonacci 数的程序都没有问题。

google code 上的 mercurial 库地址:https://regmachine-simulator.googlecode.com/hg
分享到:
评论

相关推荐

    Turing Machine Simulator

    Turing Machine Simulator

    Turing Machine simulator-开源

    图灵机(Turing Machine)是一种抽象计算模型,由英国数学家艾伦·图灵在1936年提出,用于定义任何可计算函数的理论机器。它在计算机科学和理论计算领域扮演着核心角色,因为任何可以用算法解决的问题理论上都可以被...

    Tuatara Turing Machine Simulator-开源

    **Tuatara Turing Machine Simulator 开源项目详解** Tuatara Turing Machine Simulator 是一款专为教育领域设计的图形化工具,其主要功能在于帮助用户设计和模拟图灵机。这款开源软件提供了一个直观的用户界面,...

    如何使用CX-Simulator

    CX-Simulator是一款由欧姆龙提供的用于模拟其PLC设备的软件工具。通过它,工程师和技术人员能够在计算机上模拟PLC的工作环境,从而实现对控制程序的测试、调试以及验证等功能。这对于提高开发效率、减少现场调试时间...

    Spectre Circuit Simulator and Accelerated Parallel Simulator

    用户指南是针对特定版本15.1的Virtuoso® Spectre® Circuit Simulator和Accelerated Parallel Simulator。该仿真软件由Cadence Design Systems, Inc.开发,并在2015年10月发布了该版本。 在详细探讨知识点之前,...

    register-machine-simulator:一个注册机的简单模拟器,用Python编写为代码解释器

    套准机模拟器 用Python编写的注册机模拟器,作为代码解释器。 如何使用 py rm_interpreter.py [absolute path to rm file] [optional -p or -w] 去做 英文自述文件 德语自述文件 所有29个命令及其功能按类别排序 ...

    CX Simulator 操作使用手册

    CX Simulator是一款用于OMRON PLC软件仿真的工具,它允许用户在不依赖实际硬件的情况下对PLC程序进行测试和验证。通过使用CX Simulator,程序员可以在编程完成后进行仿真测试,以便检查逻辑错误或者程序中的问题。...

    Train Simulator.zip

    这款被简称为msts的游戏是2000年代初期面市的,作为当时唯一一款成熟的铁路模拟游戏,它几乎垄断了当时所有铁路玩家的目光,在中国长盛不衰,至今仍有一批死忠用户(当然,几乎完全是盗版用户)。然而由于MSTS早已...

    cx-simulator1.7到cx-simulator1.8升级补丁.rar

    【cx-simulator1.7到cx-simulator1.8升级补丁.rar】是一个针对cx-simulator软件的更新包,从1.7版本升级至1.8版本。在IT行业中,软件升级是常见的维护和改进措施,它通常包含了新功能的添加、已有功能的优化以及错误...

    cx-simulator1.5版欧姆龙PLC模拟器软件

    《cx-simulator1.5版欧姆龙PLC模拟器软件详解及应用》 欧姆龙PLC(可编程逻辑控制器)是工业自动化领域中广泛使用的控制设备,它以其高效、稳定、易用的特点深受工程师们的青睐。在实际的开发与调试过程中,拥有一...

    CX-Simulator.rar

    CX-Simulatorrar,CX-Simulator

    S7-200_simulator_Quick_S7-200_simulator_

    S7-200 is an easy-to-learn software designed specifically for ... The software can be used to solve various automation tasks quick and easy program development and reduce design time.S7-200_simulator

    GX Simulator6-C.rar

    《GX Simulator6-C:三菱PLC仿真软件深度解析》 GX Simulator6-C是一款专为三菱PLC设计的仿真软件,广泛应用于PLC程序的编写、调试与测试阶段。这款工具的强大之处在于它能够模拟真实环境下的PLC运行,使得工程师在...

    GT-Simulator3操作手册

    《GT-Simulator3操作手册》是一份详细的软件指南,专为使用GT-Simulator3这款模拟器的用户设计。GT-Simulator3是一款强大的工业自动化设备模拟软件,它允许工程师和技术人员在实际硬件部署前进行系统测试和调试,...

    BACNET simulator主站仿真工具无时间限制使用方法

    无限使用意味着用户可以长时间运行仿真,不受任何时间限制,这对于长期项目或持续集成环境来说非常关键。 步骤1:下载与安装 要获得BACNET Simulator无时间限制的使用,首先需要从官方网站或可靠的第三方资源下载...

    CANopen 、DeviceNet Master Simulator

    The CANopen Master Simulator is an easy to use software for data exchange with CANopen slaves of many suppliers via CANopen. Input data can be read and output data can be written with the currently ...

    解决使用Tornado过程中不能启动simulator的补丁

    解决使用Tornado过程中不能启动simulator的补丁

Global site tag (gtag.js) - Google Analytics