`
yangdong
  • 浏览: 66881 次
  • 性别: 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个命令及其功能按类别排序 ...

    Train Simulator.zip

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

    CX Simulator 操作使用手册

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

    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(可编程逻辑控制器)是工业自动化领域中广泛使用的控制设备,它以其高效、稳定、易用的特点深受工程师们的青睐。在实际的开发与调试过程中,拥有一...

    Simulator_OPC Server仿真模拟器

    总的来说,Simulator OPC Server是OPC技术领域不可或缺的工具,它为开发者提供了一个安全、灵活的环境来测试和优化他们的OPC客户端应用。无论是新手学习OPC原理,还是经验丰富的工程师进行系统集成,它都是一个非常...

    CX-Simulator.rar

    CX-Simulatorrar,CX-Simulator

    GX Simulator Ver 7操作手册

    - **与实际PLC调试的区别**:虽然GX Simulator可以模拟PLC CPU进行调试,但由于其无法完全模拟实际硬件环境(如I/O模块、特殊功能模块等),因此在实际应用前还需进一步验证。 #### 五、系统配置 - **配置要求**:...

    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

    GT-Simulator3操作手册

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

    GX Simulator6-C.rar

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

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

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

    simulator OPC Server Configurator

    通过使用 "Simulator OPC Server Configurator",工程师可以在不依赖实际硬件设备的情况下进行OPC相关的开发和测试工作,大大提高了效率,减少了在生产环境中可能出现的问题。这个工具对于自动化和工业4.0领域的从业...

    C#键盘鼠标模拟 Windows Input Simulator

    基于windows input simulator http://inputsimulator.codeplex.com/,在其中添加了鼠标模拟事件。注意是C#代码。 此包可用于在windows下模拟键盘事件及鼠标事件。遵守Microsoft Public License (Ms-PL)

Global site tag (gtag.js) - Google Analytics